如何使用SQL LIKE语句并过滤MYSQL或PHP中过于相似的结果

时间:2017-09-07 14:35:12

标签: php mysql sql sql-like

所以我使用以下查询来搜索歌曲但“黑鸟”部分是用户输入并且可以更改。

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首歌曲。

3 个答案:

答案 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 %%用于匹配文本,而不管匹配文本之前或之后的文本是什么。但是当你使用=时,只返回匹配的记录。