1

我正在处理 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)

子选择也有效:

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

非常感谢您的帮助!

4

1 回答 1

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
        )
于 2012-05-24T12:00:43.387 回答