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'