【发布时间】: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)%"
目前它不起作用并在有满足条件的记录时返回零结果。
我想知道这里有什么问题?
【问题讨论】:
假设这是我需要的查询:
SELECT * FROM `products` WHERE `keywords` LIKE "%(SELECT `key` FROM `keywords` WHERE `slug` = '%d8%af%db%8c%d9%88%d8%a7%d8%b1' LIMIT 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), '%');
【讨论】:
试试这个,不知道行不行...
SELECT * FROM products
WHERE keywords LIKE "%" + (SELECT key FROM keywords WHERE slug = 'something' LIMIT 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";
如果电子邮件扩展名等于多个公司域,则任务是使用过滤器计算事件的参与者。如果有人觉得这很有用,那就太好了
【讨论】: