我公司把oracle10g的数据库移植到了mysql4.0上边了 在查询的时候出现了许多以前没有出现的错误...
请朋友帮我看看这个错误 我实在无奈了 找不到错误的缘由...  1.我这样查询就有值.
   select a.PARENT_ID from RIGHTS a,USERS b,ROLE c,ROLE_RIGHTS d,USER_ROLE e where a.id = d.RIGHTS_ID and b.id = e.user_id and c.id = d.ROLE_ID and c.id = e.ROLE_ID and b.id  = 4
可以查到值...
PARENT_ID
0
1
1
1
17
15
15
21select * from RIGHTS f where f.id in (0,1,1,17) order by f.id也可以查到值但是我奇怪了 把他们合并在一起 查询 就报错误... 但是在oracle里面 就不报错 真的不解了..
-----------------------------------------------------------
select * from RIGHTS f where f.id in (select a.PARENT_ID from RIGHTS a,USERS b,ROLE c,ROLE_RIGHTS d,USER_ROLE e where a.id = d.RIGHTS_ID and b.id = e.user_id and c.id = d.ROLE_ID and c.id = e.ROLE_ID and b.id  = 4) order by f.id
------------------------------------------------------------错误提示:
You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near '"NAME" as col_1_0_, rights0_."URL" as col_2_0_, rights0_."COMME...

解决方案 »

  1.   

    5.4 MySQL缺乏的功能
    下列功能在当前的MySQL版本是没有的。对于一张优先级表指出何时新扩展可以加入MySQL, 你应该咨询在线MySQL TODO 表。这是本手册最新的TODO表版本。见F 我们想要在未来加入到MySQL的事情列表(TODO)。 5.4.1 子选择
    在MySQL中下列语句还不能工作: SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);
    SELECT * FROM table1 WHERE id NOT IN (SELECT id FROM table2);然而,在很多情况下,你可以重写查询,而不用子选择: SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id;
    SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id where table2.id IS NULL对于更复杂的子查询,通常你可以创建临时的表保存子查询。然而在一些情况下,这种选择将行不通。最经常遇到的情形是DELETE语句,对于它标准SQL不支持联结(join)(除了在子选择)。对于这种情况,有2个可用选择,直到子选择被MySQL支持。 第一个选择是使用一种过程化的程序语言(例如Perl或PHP)来提交一个SELECT查询获得要被删除记录主键,并然后使用这些值构造DELETE语句(DELETE FROM ... WHERE ... IN (key1, key2, ...))。 第二个选择是使用交互式SQL自动构造一套DELETE语句,使用MySQL扩展CONCAT()(代替标准||操作符)。例如: SELECT CONCAT('DELETE FROM tab1 WHERE pkid = ', tab1.pkid, ';')
      FROM tab1, tab2
     WHERE tab1.col1 = tab2.col2;你可以把这个查询放在一个脚本文件并且从它重定向输入到mysql命令行解释器,将其输出作为管道返回给解释器的第2个实例: prompt> mysql --skip-column-names mydb < myscript.sql | mysql mydbMySQL仅支持INSERT ... SELECT ...和REPLACE ... SELECT ...,独立的子选择将可能在3.24.0得到,然而,在其他环境下,你现在可以使用函数IN()。 
    == 思想重于技巧 ==
      

  2.   

    1.9.5.1. Subquery Support
    MySQL 4.1 and up supports subqueries and derived tables. A “subquery” is a SELECT statement nested within another statement. A “derived table” (an unnamed view) is a subquery in the FROM clause of another statement. See Section 13.2.8, “Subquery Syntax”. 
    == 思想重于技巧 ==
      

  3.   

    1.9.5.1. Subquery Support
    MySQL 4.1 以上才支持 子查询
    == 思想重于技巧 ==