多搜索SQL搜索

时间:2013-10-29 05:45:42

标签: mysql sql multi-table

我有两张桌子:歌曲和歌手

这是我的疑问:

    Select * FROM (
    SELECT
    idx,
    name,
    IDsinger,
    permission,
    (name LIKE '%XXX%') As relevancy,
    'table1' As t
    FROM `songs`
   where
   isActive<>'0' AND name LIKE '%XXX%'
UNION
    SELECT
        idx,
        name,
        CreationDate,
        permission,
        (name LIKE '%XXX%') As relevancy,
        'table2' As t
        FROM `singers`
        WHERE isActive<>'0' AND name LIKE '%XXX%'
) AS X
order by relevancy LIMIT 10

问题是如果我写“akon lonely”没有找到结果。

但如果我写“akon”或“孤独”就会找到结果。

我会喜欢改善查询的建议..

由于

1 个答案:

答案 0 :(得分:0)

你的结果是对的。 AKON是一名歌手,Lonely是这首歌。歌曲或歌手都不叫Akon孤独。

听起来你正试图做一个更复杂的搜索形式,比如包含。

http://technet.microsoft.com/en-us/library/ms187787.aspx

你可以尝试

name like '%' + @xxx + '%' or @xxx like '%' + name + '%'