所以我使用以下查询来搜索歌曲但“黑鸟”部分是用户输入并且可以更改。
SELECT * FROM song_table WHERE artistName LIKE '%blackbird%' OR
songTitle LIKE '%blackbird%' LIMIT 10
我得到的结果如下:
{
"data":
[
{
"songTitle": "Blackbird",
"artistName": "The Beatles",
},
{
"songTitle": "Blackbird (Take 4)",
"artistName": "The Beatles",
},
{
"songTitle": "Blackbird (2009 Stereo Remaster)",
"artistName": "The Beatles",
},
{
"songTitle": "Blackbird (2009 Mono Remaster)",
"artistName": "The Beatles",
}
]
}
那么如何使用MySQL或PHP过滤结果,以便只返回一首披头士乐队的“Blackbird”歌曲而不是同一首歌曲中有4首不同的歌曲?另外,我需要以某种方式进行,这样我仍然可以返回10首歌曲。
答案 0 :(得分:1)
您可以使用当前查询并添加GROUP BY
条件。见下文
SELECT
*
FROM song_table
WHERE artistName LIKE '%blackbird%'
OR songTitle LIKE '%blackbird%'
GROUP BY
artistName
LIMIT 10;
答案 1 :(得分:1)
你可以改为
songTitle LIKE'blackbird'
那么你只会得到第一个结果。
答案 2 :(得分:1)
不要使用LIKE '% text %'
,而是在查询中使用= 'blackbird'
。由于LIKE %%
用于匹配文本,而不管匹配文本之前或之后的文本是什么。但是当你使用=
时,只返回匹配的记录。