我试着发表声明
SELECT s.*
FROM status s
WHERE s.reg IN (Select reg from sdel) OR
s.reg IN (Select reg from ddel);
上述声明已经解决,但是当我尝试下面提到的声明时,它并没有为我提取任何结果。请帮助我,我被严重困扰
$res=mysql_query("SELECT s.*
FROM status s
WHERE s.reg IN (Select reg,pic from sdel where sdel.reg = status.reg) OR
s.reg IN (Select reg,pic from ddel where ddel.reg = status.reg) OR
s.reg IN (Select reg,pic from gdel where gdel.reg = status.reg) OR
s.reg IN (Select reg,pic from ip where ip.reg = status.reg);");
答案 0 :(得分:1)
使用两个in
表达式执行此操作:
SELECT s.*
FROM status s
WHERE s.reg IN (Select reg from sdel) OR
s.reg IN (Select reg from ddel);
您还可以将UNION ALL
用于一个查询。但是,两个单独的查询为优化提供了更多机会。
答案 1 :(得分:0)
在第二个查询中,您提取属性reg
和pic
以及与唯一属性reg
进行比较,因此结果始终为false。
如果您只需要比较reg
,请从内部select子句中删除pic
,例如:
$res=mysql_query("SELECT s.*
FROM status s
WHERE s.reg IN (Select reg from sdel where sdel.reg = status.reg) OR
s.reg IN (Select reg from ddel where ddel.reg = status.reg) OR
s.reg IN (Select reg from gdel where gdel.reg = status.reg) OR
s.reg IN (Select reg from ip where ip.reg = status.reg);");