多个SQL查询IN OPERATOR错误

时间:2017-04-23 18:36:49

标签: mysql mysqli phpmyadmin

我试着发表声明

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);");

2 个答案:

答案 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)

在第二个查询中,您提取属性regpic以及与唯一属性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);");