gpt4 book ai didi

mysql - 构建包含映射表的查询?

转载 作者:行者123 更新时间:2023-11-29 13:39:28 25 4
gpt4 key购买 nike

我正在构建一个非常简单的cms。
其中的两个对象是文章标签这是我当前拥有的数据库架构:

The scheema ERD

使用这个我可以按标签获取文章列表SELECT ... WHERE web_tag.Name = 'News'

<小时/>

问题

如何获取包含标签的文章列表。

我尝试做

SELECT ... WHERE web_tag.Name != 'News'

如果文章只有一个标签,则此方法有效。如果文章明显有多个标签,则不起作用

非常感谢!

最佳答案

一种方法

SELECT a.id_article, a.name
FROM web_article a
WHERE NOT EXISTS
(
SELECT *
FROM web_tag_to_article ta JOIN web_tag t
ON ta.id_tag = t.id_tag
WHERE id_article = a.id_article
AND t.name = 'News'
)

SELECT id_article, name
FROM web_article
WHERE id_article NOT IN
(
SELECT id_article
FROM web_tag_to_article ta JOIN web_tag t
ON ta.id_tag = t.id_tag
GROUP BY id_article
HAVING MAX(t.name = 'News') = 1
)

SELECT a.id_article, a.name
FROM web_article a LEFT JOIN web_tag_to_article ta
ON a.id_article = ta.id_article LEFT JOIN web_tag t
ON ta.id_tag = t.id_tag
GROUP BY a.id_article, a.name
HAVING MAX(COALESCE(t.name,'') = 'News') = 0

这里是SQLFiddle 演示

关于mysql - 构建包含映射表的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18284774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com