2011-06-15 49 views
0

下面的MySQL語句給了我三次相同的結果,因爲我需要從不同的表中選擇所有數據進行比較。我如何告訴MySQL我只需要其中的一個條目?MySQL WHERE語句與交叉表比較

SELECT watchedItems.id FROM watchedItems, globalItems, bidGroups 
WHERE (watchedItems.bidGroupID IS NULL OR (watchedItems.bidGroupID IS NOT NULL AND bidGroups.bidGroupQty > 0)) 
AND watchedItems.aid = globalItems.aid 
AND watchedItems.maxPrice > globalItems.currentPrice 

輸出:

ID 
2 
2 
2 

回答

0

你需要一些聯接:

SELECT watchedItems.id 
FROM watchedItems 
left join globalItems on watchedItems.bidGroupID = bidGroups.bidGroupID 
left join bidGroups on watchedItems.aid = globalItems.aid 
WHERE (watchedItems.bidGroupID IS NULL OR bidGroups.bidGroupQty > 0) 
AND watchedItems.maxPrice > globalItems.currentPrice 

因爲有在bidGroups表三排你都拿到副本。