如何在另一个查询的LIKE条件中使用SQL查询结果?

时间:2014-11-29 19:56:46

标签: mysql subquery sql-like

我创建了一个子查询,使用SQL LIKE条件从一个表中搜索特定字符串。我想使用此子查询的结果作为在我的主SQL查询中也使用LIKE条件搜索的字符串。我尝试了下面的代码,但是我得到了语法错误,虽然它似乎应该是这样做的...遗憾的是我不是SQL专家而只是试图感受到这一点。

SELECT * FROM `allcesseries` 
WHERE series_id LIKE '%'+(SELECT industry_code FROM `ceindustry` WHERE industry_name LIKE '%Technical and trade schools%')+'%'

2 个答案:

答案 0 :(得分:1)

SELECT * FROM `allcesseries` 
WHERE series_id LIKE concat('%',
    (SELECT industry_code FROM `ceindustry` 
    WHERE industry_name LIKE '%Technical and trade schools%'),
'%')

答案 1 :(得分:0)

我建议您在这种情况下使用exists

SELECT *
FROM `allcesseries` a
WHERE EXISTS (SELECT 1 
              FROM `ceindustry` c
              WHERE c.industry_name LIKE '%Technical and trade schools%' AND
                    a.series_id LIKE CONCAT('%', c.industry_code, '%') 
             );

如果您有多个匹配项,那么这将按预期工作。

如果您愿意,也可以将其直接表示为联接:

SELECT a.*
FROM `allcesseries` a JOIN
     ceindustry c
     ON c.industry_name LIKE '%Technical and trade schools%' AND
        a.series_id LIKE CONCAT('%', c.industry_code, '%')

但如果有多行符合ceindustry中的条件,您将获得重复项。