2013-03-08 26 views
0

我使用MySql,當運行下面的查詢時,我發現它在兩個框中的行爲不同,任何人都可以幫我嗎?我的SQL括號使用NOT IN

的代碼是在這裏:

SELECT * 
FROM `product` AS `e` 
WHERE e.id NOT IN((SELECT `product_id` FROM `sales`)) 

在一個盒子裏,它運作良好,並返回結果。在其他框,它顯示了error: [Err] 1242 - Subquery returns more than 1 row

而且這兩個框效果很好,如果下面刪除一個對():

SELECT * 
FROM `product` AS `e` 
WHERE e.id NOT IN(SELECT `product_id` FROM `sales`) 

誰能告訴我的原因,即有關服務器設置?我可以解決這個問題而不修改sql語句嗎?

回答

0

該數據;

(SELECT `product_id` FROM `sales`) 

被作爲'NOT IN'使用的列表中的第一項處理。 這必須是單個值,因此會返回錯誤,因爲會返回多行。

+0

但是,爲什麼它在其他盒子中工作? – SICON 2013-03-08 09:05:54

+0

通過將MySql升級到高版本解決了此問題。謝謝 – SICON 2013-03-25 05:54:03