我有哪裏標籤和項目之間的引用都存儲在我的數據庫中的一個表,在表格獲取標籤多個唯一的隨機排在MySQL從一個參照表
id - tagID - itemID 1 - 1 - 1 2 - 2 - 1 3 - 1 - 2 4 - 3 - 2 5 - 4 - 2
等
我有作爲輸入當前的itemID,並且我想爲該項目的每個標籤選擇一個其他隨機項目ID。
最明顯的方法是運行一個查詢,選擇這一項的標籤,然後爲每個標籤的一個查詢選擇不同的itemid爲每個標籤。
例如,對於項目Id 「1」
SELECT tagID FROM mytags WHERE itemID=1
然後的foreach標籤識別 「X」
SELECT itemID FROM mytags WHERE tagID= "X" AND itemID!=1
但是,如果一個項目有10個標籤,這將導致只爲這11個查詢我的申請的一部分。
我試圖找到一種方式來運行單個SQL來得到相同的結果。
良好的開端是以下
SELECT tagID, itemID
FROM `mytags`
WHERE tagID IN (SELECT tagID
FROM `mytags`
WHERE itemID =1)
AND itemID !=1
但這返回所有其他行此項目的標籤,而我想只是其中之一。
任何人有任何偉大的想法?
感謝
如果您只需要其中的一個,爲什麼不在查詢中添加「LIMIT 1」? – 2012-03-01 15:21:20
因爲「限制1」會給我一個標籤中的一個項目。我希望每個標籤都有一個項目。 – user1092289 2012-03-02 15:57:57