使用MySQL,我有一个带有名称字段的表。我想根据一组“关键字”检查该名称字段,该关键字表示该名称不是人,而是业务。
单词:如果名称包含任何关键字,请获取整行。
我的尝试:
SELECT * FROM leads WHERE CONTAINS(leads.name, (SELECT word FROM keywords));
(返回“子查询返回超过1行”)
答案 0 :(得分:3)
它不起作用。您可以使用连接
SELECT l.*
FROM leads l
JOIN keywords k on instr(leads.name, word) > 0
答案 1 :(得分:0)
这样的事情应该这样做:
SELECT distinct
l.*
FROM
leads l
join keywords k on l.name = k.word
编辑: 如果你有逗号分隔列表
,或类似的东西SELECT distinct
l.*
FROM
leads l
join keywords k1 on l.name like concat('%,', k1.word)
join keywords k2 on l.name like concat('%,', k2.word, ',%')
join keywords k3 on l.name like concat(k2.word, ',%')
join keywords k4 on l.name = k4.word
答案 2 :(得分:0)
你在这里:
SELECT * FROM leads WHERE leads.name IN (SELECT word FROM keywords);
希望这有帮助。
答案 3 :(得分:0)
使用数值,我使用CONCAT与逗号分隔符,以确保找到确切的值。 在你的情况下,它将是:
SELECT l.* FROM leads l
JOIN keywords k
on instr(CONCAT(',', leads.name, ','), CONCAT(',', word, ',')) > 0