如何在 Mysql 中通过 LIKE 使用嵌套的 SELECT?
Posted
技术标签:
【中文标题】如何在 Mysql 中通过 LIKE 使用嵌套的 SELECT?【英文标题】:How to use nested SELECTs in Mysql with LIKE? 【发布时间】:2011-11-01 18:47:12 【问题描述】:假设这是我需要的查询:
SELECT * FROM `products` WHERE `keywords` LIKE "%(SELECT `key` FROM `keywords` WHERE `slug` = '%d8%af%db%8c%d9%88%d8%a7%d8%b1' LIMIT 1)%"
目前它不起作用并在有满足条件的记录时返回零结果。 我想知道这里有什么问题?
【问题讨论】:
【参考方案1】:这应该可行:
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) + "%";
【讨论】:
愚蠢的是,'+' 不会在 mysql 中连接字符串 - 仅在几乎所有其他 SQL 数据库中。【参考方案3】:另一个带有类似和嵌套 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";
如果电子邮件扩展名等于多个公司域,则任务是使用过滤器计算事件的参与者。如果有人觉得这很有用,那就太好了
【讨论】:
以上是关于如何在 Mysql 中通过 LIKE 使用嵌套的 SELECT?的主要内容,如果未能解决你的问题,请参考以下文章