在subselection / LEFT JOIN上调试?

时间:2012-05-24 11:59:35

标签: mysql left-join subquery

我正在研究mySQL上的这个查询 - 它似乎是在运行服务器上的PEAR和MDB2网站上处理的(不知道为什么......不要自己这样做)。在我的本地测试系统上,它始终生成MDB2错误。 PHPmyadmin也不执行此查询。 需要进行子选择,因为此查询中不只有一个而是四个子选择。

SELECT * FROM table1 
WHERE table1.orderID 
    IN 
        (
        SELECT * 
            FROM table1 
        LEFT JOIN table2
            ON (table1.customID = table2.customID) 
        WHERE table1.active=1
        )

我可以简化它(工作):

SELECT * FROM table1 
WHERE table1.orderID 
    IN (1,2,3)

Subselect也有效:

SELECT * 
    FROM table1 
LEFT JOIN table2
    ON (table1.customID = table2.customID) 
WHERE table1.active=1

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

内部查询应该只返回一列,如:

SELECT  *
FROM    table1 
WHERE   table1.orderID IN 
        (
        SELECT  orderId

--              ^^ here

        FROM    table1 
        LEFT JOIN
                table2
        ON      table1.customID = table2.customID
        WHERE   table1.active=1
        )