0

我没有太多的子查询练习,并且在编写这个查询时遇到了非常困难的时间。我基本上需要做的是从user_info表中选择符合以下条件的所有记录。

user_infootherTable包含user_id与两个表相关的字段。user_info如果$state变量等于ot.stateAND ,我需要选择所有字段,ot.user_id = ui.user_id同时仍保持user_infoWHERE 语句的所有条件。

SELECT * FROM users_info ui
WHERE cond1=1 AND cond2=2 AND (ot.state = $state AND ui.user_id = ot.user_id)
(
   SELECT * FROM otherTable as ot
   WHERE ui.user_id = ot.user_id
)

请注意,我相信我对我的查询很满意,我很感激有关如何完成此任务的任何澄清。

提前谢谢了!

4

1 回答 1

2

在我看来,您只需将 2 个表连接在一起并应用其余的约束:

select
from
users_info ui
inner join otherTable  ot
on ui.user_id = ot.user_id
where
cond1=1 AND 
cond2=2 
AND ot.state = $state

如果要使用子查询:

select
from
users_info ui
inner join (select user_id from otherTable where state = $state) ot
on ui.user_id = ot.user_id
where
cond1=1 AND 
cond2=2 

或者您可以只使用 where 子句:

    select
    from
    users_info ui
    where
    cond1=1 AND 
    cond2=2 and
ui.user_id in (select user_id from otherTable where state = $state) 
于 2013-10-28T18:11:02.897 回答