简体   繁体   中英

How can an SQL query result be used in the LIKE condition of another query?

I have created a subquery that searches for a particular string from one table, using the SQL LIKE condition. I would like to use this subquery's result as the string to search for in my main SQL query also using the LIKE condition. I tried the below code but I get syntax errors, although it seems to be the way it should be done...sadly I am not an SQL expert and just trying to feel this out.

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

I would suggest that you use exists in this case:

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, '%') 
             );

If you have multiple matches, then this will work as expected.

You can also phrase this directly as a join, if you want:

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, '%')

But if there are multiple rows that satisfy the conditions in ceindustry , you will get duplicates.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM