我有以下SQL查詢,但是這並不完全是我想要的:添加子查詢 - SQL Server 2008的
SELECT
TOP (20) Attribs.ImageID AS ItemID
FROM
Attribs
LEFT OUTER JOIN
Items ON Attribs.ImageID = Items.ImageID
WHERE
(attribID IN ('a','b','c','d','e'))
AND (deleted NOT IN (1,2))
AND Attribs.attribID = 'a' AND Attribs.attribID = 'b'
GROUP BY
Attribs.ImageID
ORDER BY
COUNT(DISTINCT attribID) DESC
我需要的是查詢
AND Attribs.attribID = 'a' AND Attribs.attribID = 'b'
第一,然後將剩下WHERE子句基於上述查詢結果。
這是可能實現使用子查詢嗎?
我使用SQL Server 2008
謝謝
如果我已經正確理解你的問題,我認爲這不會有什麼區別,哪個條件優先。 – deutschZuid 2012-04-19 22:03:16
您的搜索條件相互矛盾。沒有記錄將具有「a」,「b」或「c」以及「123」或「456」(更不用說都是!)的attribID值。你能澄清你想要做什麼嗎? – 2012-04-19 22:31:11
Joh,你說得對。我更新了示例查詢。我想要的是(在這種情況下)獲得'a'和'b'的結果,然後得到在(a,b,c,d,e)中具有最匹配的attribID的imageID。假設我有itemID 1-a,c,d itemID 2-a,b,c,itemID 3-a,b。在這種情況下,itemID 1不會被包含在結果中,儘管它具有最高的匹配性。 – shinya 2012-04-19 22:51:45