gpt4 book ai didi

php - mysql 具有所有值

转载 作者:行者123 更新时间:2023-11-29 01:47:08 25 4
gpt4 key购买 nike

这与我的最后一个问题有关 mysql query with AND, OR and NOT

我没有编辑问题,而是提出了一个新问题,因为该问题只是前一个问题的一部分,但有所改动。

我希望执行一个 mysql 查询,返回包含所有必需主题的所有文章。

Article
id
....

Topic
id
....

ArticleTopics
article_id
topic_id
type

有效的做法:

SELECT * FROM Article LEFT JOIN ArticleTopics ON Article.id = ArticleTopics.article_id
WHERE ArticleTopics.topic_id HAS ALL (these topics)

这可能吗?最好的方法是什么?

最佳答案

其他几个答案建议在每个过滤器子句的子表上使用别名——这可能不是很有效或无法很好地扩展。

考虑:

SELECT x.*
FROM Article x INNER JOIN
(SELECT t.article_id, COUNT(t.article_id)
FROM articleTopics t
WHERE t.topic_id IN ([your_list_of_topics])
GROUP BY t.article_id
HAVING COUNT(t.article_id)>=[number of elements in [your_list_of_topics]]
ORDER BY COUNT(t.article_id) DESC
LIMIT 0,100) AS ilv
ON x.id=ilv.article_id

这种方法的另一个优点是查询的结构不需要随着您正在搜索的主题数量而改变——您甚至可以将它们放在一个临时表中并执行连接而不是使用 ' IN (...)' 字面意思。

您需要尝试一下,看看哪个查询表现得更好。

关于php - mysql 具有所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4153392/

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