好吧,我该如何改变这个:
select * from quallev_qualificationlevel quallev
where quallev.quallev_qual_id in (/* */ select qual.qual_id from qual_qualification qual, qde_qualificationdescription qde
where (qual.qual_id = qde.qde_qual_id)
and qual.qual_startdate <= '2013-12-02'
and qual.qual_enddate >= '2013-12-02'
and qde.qde_namepurpose_cd_id = 7294
and qde.qde_langauge_id = 2
and qde.qde_startdate <= '2013-12-02'
and qde.qde_enddate >= '2013-12-02'
order by qual.qual_id,
qual_code /* */)
and quallev.quallev_startdate <= '2013-12-02'
and quallev.quallev_enddate >= '2013-12-02'
只有一个选择?
我假设我需要使用某种形式的内连接,只是不确定wt以及如何使用
最佳答案
要替换 in
子句,您可以这样做
inner join qual_qualification qual on qual.qual_id = quallev.quallev_qual_id
inner join qde_qualificationdescription qde on qual.qual_id = qde.qde_qual_id
但是 inner join
与 in
子句不同。
所以你不应该再使用 select *
,但至少应该使用 select quallev.*
如果连接为每个 quallev_qualificationlevel
检索超过 1 个 qual_qualification
,您将得到重复的结果,因此您可能需要一个 distinct
子句.
关于mysql - 将查询的 where 子句中的选择查询更改为查询中只有一个选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20353260/