我有一个“照片”表:
photoID (INT), setID (INT)....
18900 , 234 , ...
18901 , 234 , ...
18902 , 234 , ...
18903 , 249 , ...
18904 , 249 , ...
18905 , 249 , ...
我还有一个“photoKeyword”表:
photoID (INT), keywordID (INT)
18900 , 12
18900 , 21
18901 , 17
18905 , 26
18905 , 10
正如您从我上面的示例中看到的那样,照片 18902、18903 和 18904 在 photoKeyword 表中没有任何关键字。这正是我要建立的。
我试图生成一个没有关键字但一次只有一个 setID 的 photoID 列表。如您所见,照片 18902 没有关键字,18903 和 18904 也没有关键字,但这三张照片有两个不同的 setID。
所以运行这个查询一次,应该只返回照片 18902。然后我会为这张照片添加关键字,这样就不会再有问题了。下次我运行查询时,它应该返回照片 18903 和 18904,即下一组 (setID:249) 没有关键字的照片。
这怎么可能?是否可以仅使用 SQL?我希望你能理解我想要实现的目标,我只是在写它而迷失了自己!!
感谢收到的任何想法......
最佳答案
尝试
SELECT X.photoID FROM photos X
INNER JOIN
(SELECT DISTINCT P.setID FROM
photos P
LEFT OUTER JOIN (SELECT K.photoID, COUNT(*) C FROM photoKeyword K GROUP BY K.photoID) KC ON KC.photoID = P.photoID
GROUP BY P.setID
HAVING SUM (KC.C) < 1) Y ON X.setID = Y.SetID
关于mysql - SQL - 混淆查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7697315/