多个选择和一个Join ..SQL Oracle

时间:2012-02-10 21:32:22

标签: sql oracle select join

SELECT table1.col1, table2.col2
FROM table1
WHERE col3
IN(SELECT col1 FROM table3 WHERE col4 IN(SELECT col4 FROM table4 WHERE col5 LIKE '%XYZ%'))
INNER JOIN table2 ON table1.col1=table2.col6
ORDER BY table1.col1

我得到ORA00933 error.SQL command not properly ended.如果我删除了联接,则查询完美无缺。但我需要加入。错误在LIKE关键字附近。我该如何解决?

2 个答案:

答案 0 :(得分:4)

您错放了INNER JOIN,它位于您的WHERE子句中。

请注意,您可能希望采用某些格式化方案来编写SQL语句。它可以更容易地发现这些错误。

SELECT table1.col1, table2.col2 
FROM   table1 
       INNER JOIN table2 ON table1.col1=table2.col6 
WHERE  col3 IN (
          SELECT col1 
          FROM table3 
          WHERE col4 IN (
             SELECT col4 
             FROM table4 
             WHERE col5 LIKE '%XYZ%'
          )
       ) 
ORDER BY table1.col1

答案 1 :(得分:2)

尝试在WHERE子句之前移动您的联接:

    SELECT table1.col1, table2.col2
    FROM table1
    INNER JOIN table2 ON table1.col1=table2.col6
    WHERE col3
    IN(SELECT col1 FROM table3 WHERE col4 IN(SELECT col4 FROM table4 WHERE col5 LIKE '%XYZ%'))
    ORDER BY table1.col1