gpt4 book ai didi

mysql:查找具有多个标签和相同 id 的行

转载 作者:可可西里 更新时间:2023-11-01 07:18:32 24 4
gpt4 key购买 nike

我在计算 mysql 在对两个表进行 JOIN 时查找具有两个特定“标签”和相同“hashid”的链接时遇到问题

假设我的表是这样的:

链接

md5     url         title   numberofsaves
-----------------------------------------
a0a0 google.com foo 200
b1b1 yahoo.com yahoo 100

标签

 md5    tag
---------------
a0a0 awesome
a0a0 useful
a0a0 cool
b1b1 useful
b1b1 boring

我想返回同时具有“有用”和“很棒”标签的行

通过 1 个标签查找链接的当前(有效/快速)查询:

SELECT links.title, links.numsaves FROM links LEFT JOIN tags ON links.md5=tags.md5 WHERE tags.tag = 'useful' ORDER BY links.numberofsaves DESC LIMIT 20

阅读 article 之后我尝试使用以下内容:

SELECT links.title, links.numsaves FROM links LEFT JOIN tags ON links.md5=tags.md5 GROUP BY tags.md5 HAVING SUM(tags.tag='useful') AND SUM(tags.tag='awesome') ORDER BY links.numberofsaves DESC LIMIT 20

确实可以工作,但是速度太慢以至于无法使用。

有人知道解决办法吗?

最佳答案

题型叫做Relational Division

SELECT  a.md5, 
a.url,
a.title
FROM Links a
INNER JOIN Tags b
ON a.md5 = b.md5
WHERE b.Tag IN ('awesome', 'useful') -- <<== list of desired tags
GROUP BY a.md5, a.url, a.title
HAVING COUNT(*) = 2 -- <<== number of tags defined

输出

╔══════╦════════════╦═══════╗
║ MD5 ║ URL ║ TITLE ║
╠══════╬════════════╬═══════╣
║ a0a0 ║ google.com ║ foo ║
╚══════╩════════════╩═══════╝

关于mysql:查找具有多个标签和相同 id 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15859309/

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