2011-06-15 147 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表三排你都拿到副本。