【发布时间】:2020-06-19 17:30:04
【问题描述】:
我找不到任何符合我的问题的内容。
我正在尝试改进我的文件搜索查询,以便能够通过多个标签(AND 和 OR)获取图像。
获取具有一个或另一个标签的图像相当容易:
SELECT M.*, MTL.tag_id
FROM medias M
LEFT JOIN medias_taglinks MTL ON MTL.media_id=M.id
WHERE ( MTL.tag_id = '1' || MTL.tag_id = '2')
GROUP BY M.id
但是,如果我想获取具有这两个标签的图像,我没有得到任何结果,而且我不明白为什么。
SELECT M.*, MTL.tag_id
FROM medias M
LEFT JOIN medias_taglinks MTL ON MTL.media_id=M.id
WHERE ( MTL.tag_id = '1' && MTL.tag_id = '2')
GROUP BY M.id
我猜我需要将我的条件添加到联接中,但我还没有成功。
这里的 SQL FIDDLE:http://sqlfiddle.com/#!9/6e5d6/4
【问题讨论】:
-
一种被低估的 SQL 调试技术是正确的格式。
-
同意,有些请求确实变得复杂了。 :)
-
解释你期望得到什么以及为什么。否则,除了 SQL 语义的另一种表示不能解决您的误解之外,还有什么可以回答的呢?此外,这种澄清会导致有效的搜索短语。是的,这是一个常见问题解答。在考虑发布之前,请始终在谷歌上搜索任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,带有和不带有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。如果您发布,请使用一个措辞作为标题。请参阅How to Ask 和投票箭头鼠标悬停文本。 PS把所有需要的东西都放在你的帖子里。
-
您的问题是什么? “你们有谁可以帮忙吗?”不是一个有效的问题。您的总体目标是常见问题解答。您的第二个代码问题也是一个常见问题解答。当你得到一个你不期望/不理解的结果时,停止试图找到你的总体目标并找出你的误解是什么。--隔离第一个意外/误解的子表达式及其输入和输出,了解什么是误解、错字、错误的推理等导致了它。 (调试基础。)询问一下。
-
感谢您的建议@philipxy。下次我会尽量考虑这些点。
标签: mysql join count left-join