如何在Mysql中使用嵌套SELECT和LIKE?

3
假设这是我需要的查询:
SELECT * FROM `products` WHERE `keywords` LIKE "%(SELECT `key` FROM `keywords` WHERE `slug` = '%d8%af%db%8c%d9%88%d8%a7%d8%b1' LIMIT 1)%"

当前无法工作,尽管有满足条件的记录,但返回零个结果。
我想知道问题出在哪里?

3个回答

10
这应该可行:
SELECT * 
FROM products 
WHERE keywords LIKE
    CONCAT('%', (SELECT `key` FROM `keywords` 
        WHERE `slug` = '%d8%af%db%8c%d9%88%d8%a7%d8%b1' LIMIT 1), '%');

2

试试这个,不确定它是否有效...

SELECT * FROM products
WHERE keywords LIKE "%" + (SELECT key FROM keywords WHERE slug = 'something' LIMIT 1) + "%";

2
愚蠢的是,在MySQL中“+”不会连接字符串——而在几乎所有其他SQL数据库中都可以。 - Doug Kress

1
另一个与嵌套SELECT相关的工作示例:

SELECT COUNT(email) as count FROM table1 t1 
JOIN (
      SELECT company_domains as emailext FROM table2 WHERE company = 'DELL'
     ) t2 
ON t1.email LIKE CONCAT('%', emailext) WHERE t1.event='PC Global Conference";

任务是计算参加活动的人数,并筛选出电子邮件后缀等于多个公司域名的人。如果有人发现这个有用的话,那就太好了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接