Mysql 在查询变成另一个在查询时如何以不同的方式写入?

Mysql 在查询变成另一个在查询时如何以不同的方式写入?,mysql,mysqli,Mysql,Mysqli,我希望这种类型的查询具有正确的写入方式? SELECT * FROM tb_user WHERE ( id IN (SELECT user_id FROM tb_user_experience WHERE company_name IN(SELECT company_name FROM tb_company WHERE tb_company.no_employee = '2')) 我知道这是一个错误的查询,但如何用mysql的正确语法用这个逻辑得到

我希望这种类型的查询具有正确的写入方式?

SELECT * FROM tb_user WHERE (
    id IN (SELECT user_id FROM tb_user_experience 
    WHERE
    company_name IN(SELECT company_name 
    FROM tb_company 
    WHERE tb_company.no_employee = '2'))
我知道这是一个错误的查询,但如何用mysql的正确语法用这个逻辑得到结果呢

这是半个查询我的完整查询如下

SELECT * FROM tb_user WHERE 
    steps_completed = 6 AND is_active='y' AND id != '1' AND 
    (country != '') AND (
    id IN (SELECT user_id FROM tb_user_experience WHERE 
    company_name IN(SELECT company_name FROM tb_company WHERE
    tb_company.no_employee = '2')))
试试这个

SELECT * FROM tb_user WHERE 
    steps_completed = 6 AND is_active='y' AND id != '1' AND 
    (country != '') AND (
    id IN (  select e.user_id from tb_user_experience e 
     inner join tb_company c on c.company_name=e.company_name
     where c.no_employee = '2'))

使用Join子句可获得更好的性能

查询也可以重新编写为:

SELECT u.* 
FROM tb_user u
INNER JOIN tb_user_experience e 
    ON  u.id = e.user_id
    AND u.steps_completed = 6 
    AND u.is_active = 'y' 
    AND u.id != '1'
    AND u.country != ''
INNER JOIN tb_company c
    ON  c.company_name = e.company_name
    AND c.no_employee = '2'