我有哪里标签和项目之间的引用都存储在我的数据库中的一个表,在表格获取标签多个唯一的随机排在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