gpt4 book ai didi

mysql - 在 MySQL 中,如何连接多行然后搜索该数据?

转载 作者:行者123 更新时间:2023-12-01 00:52:07 26 4
gpt4 key购买 nike

在 MySQL 上有点挣扎。我发现 GROUP_CONCAT 函数看起来很适合我的需要,但我不知道如何使用它。我想做的是在多个列以及 concat 列中进行搜索;因此,如果任何列等于我的搜索词(本例中的 %a%),它应该被返回。我已经想出如何返回串联的流派字符串,但我不知道如何搜索它。

SELECT albumArtworkURL, albumName, albumID, 
b.artistID AS ArtistID, b.artistName AS ArtistName,
GROUP_CONCAT(DISTINCT c.songGenre separator ',') AS genres
FROM album
LEFT JOIN artist b ON album.albumArtist = b.artistID
LEFT JOIN song c ON albumID = c.songOnAlbum
WHERE albumName LIKE '%a%' OR albumYear LIKE '%a%'
GROUP BY albumArtworkURL, albumName, albumID, ArtistID, ArtistName
ORDER BY albumYear ASC, albumName ASC

非常感谢您的帮助。谢谢:-)

最佳答案

要从 GROUP_CONCAT 中搜索结果,该谓词必须位于 HAVING 子句中,该子句应出现在 GROUP BY 之后和 ORDER BY 之前,例如

HAVING genres LIKE '%a%'

请注意,在访问行时,即在评估 ON 和 WHERE 子句中的谓词时,GROUP_CONCAT 表达式的值不可用。在准备好结果集之前,该表达式不可用,这就是为什么该谓词需要位于 HAVING 子句中的原因。 (HAVING 子句在执行计划中处理得非常晚,在应用 LIMIT 子句之前,并且可能在满足 ORDER BY 的排序操作之前。)

关于mysql - 在 MySQL 中,如何连接多行然后搜索该数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14491198/

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