我正试图从MySQL迁移到Oracle,我的一个查询最初看起来像这样
SELECT t1.table_name
FROM db_available AS t1
INNER JOIN db_user_access AS t2
ON t1.id=t2.db_id
WHERE t2.user_id=100 AND t2.expires >= NOW();
但是,当我在ORACLE中运行相同的查询并进行微小更改时......
SELECT t1.table_name
FROM db_available AS t1
INNER JOIN db_user_access AS t2
ON t1.id=t2.db_id
WHERE t2.user_id=100
AND t2.expires >= SYSDATE;
它给了我以下错误:
SQL错误:ORA-00933:SQL命令未正确结束00933. 00000 - “SQL命令未正确结束”
Oracle SQL Developer工具强调了语句
部分的问题AS t1
我读了一些其他问题,提到围绕Oracle语句的某些部分放置括号,但是我只是一个初学者并且还没有完全理解Oracle数据库,所以我真的不知道在哪里放置它们或者如果它们在这种情况下甚至需要。
答案 0 :(得分:2)
在oracle中,您在表格别名时不需要指定as
:
SELECT t1.table_name
FROM db_available t1
INNER JOIN db_user_access t2
ON t1.id=t2.db_id
WHERE t2.user_id=100
AND t2.expires >= SYSDATE;
答案 1 :(得分:0)
SELECT t1.table_name
FROM db_available t1, db_user_access t2
WHERE t1.id=t2.db_id
AND t2.user_id=100
AND t2.expires >= SYSDATE;
根据oracle文档,您也不需要使用显式连接。