mysql暂时不支持子查询,也就是说你写的这条语句没法执行。你可以用连接来做,效率应该鼻子查询要高。

解决方案 »

  1.   

    我将check子句写成check classid!='0'也不行啊。在这儿没有子查询啊。和上面的这种查询我在mysql的官方文档中见过一个,但是不是check子句的。:-P
      

  2.   

    CHECK TABLE tbl_name[,tbl_name...] [TYPE = [QUICK | FAST | EXTEND | CHANGED]]
    不知是不是我孤陋寡闻了,好像MySQL里不支持你的CHECK用法吧
      

  3.   

    create_definition:
      col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
                [PRIMARY KEY] [reference_definition]
      or    PRIMARY KEY (index_col_name,...)
      or    KEY [index_name] (index_col_name,...)
      or    INDEX [index_name] (index_col_name,...)
      or    UNIQUE [INDEX] [index_name] (index_col_name,...)
      or    FULLTEXT [INDEX] [index_name] (index_col_name,...)
      or    [CONSTRAINT symbol] FOREIGN KEY [index_name] (index_col_name,...)
                [reference_definition]
      or    CHECK (expr)
    上面的这段文字来自mysql的官方文档.在"6.5.3 CREATE TABLE Syntax(http://www.mysql.com/doc/en/CREATE_TABLE.html)",但是没有更多的关于check后面的expr的说明.
      

  4.   

    BTW:我的MySQL是3.23.53,不知道是不是版本太低了。
      

  5.   

    FOREIGN KEY、CHECK和REFERENCES子句实际上不做任何事情,其语法仅仅提供兼容性,使得它更容易从其他的SQL服务器移植代码并运行借助引用创建表的应用。
    详细地可查看   MySQL缺少的功能。
      

  6.   

    to shuixin13(犬犬(心帆):
    http://www.mysql.com/doc/en/ANSI_diff_Foreign_Keys.html
    从上面这个网址可以看出foreign key已经不是MySQL缺少的功能了。
    至于check子句和References子句我还没有见到很具体的描述。(它的文档我还没看完,E文不太行,呵呵)。
    很高兴能与你探讨。我做php+Mysql的网站开发时间也还不长,刚刚两年时间。很多东西都不会。以前一直就只用了MySQL的一些最基本的东西。现在才想着怎么样将它的效率发挥出来,呵呵所以就出现了一大堆问题。
    希望能多探讨。