如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何在动态解决方案中通过内部数组循环嵌套数组

在 Python 中通过嵌套的 Json/dict 解析

如何在 VUE 中通过 v-model 直接更新嵌套对象数组值?

在 SQL (SSMS) 中通过 LIKE 运算符传递列表

如何在Mysql查询中通过PHP对加密数据进行排序

如何在 Oracle RDBMS 中通过掩码删除用户