SELECT per_ID, per_Name, per_Iden, per_Sex, per_SPhone, per_MPhone, per_Email, 
      DutyName, PostName
FROM vwAllPerson
WHERE (per_Birthday, per_HPlace IN
          (SELECT per_Birthday, per_HPlace
         FROM vwAllPerson
         WHERE per_Birthday > '1970' OR
               per_HPlace = 'ddd'))
GROUP BY per_ID, per_Name, per_Iden, per_Sex, per_SPhone, per_MPhone, per_Email, 
      DutyName, PostName
ORDER BY per_ID
上面的SQL语句哪错了,应该怎么修改

解决方案 »

  1.   

    子查询只能针对一个值,不能有两个
    per_Birthday, per_HPlace <-- 两个中去掉一个
      

  2.   

    正解!~~~只能是WHERE (per_Birthday IN
              (SELECT per_Birthday
             FROM vwAllPerson你如果是多个的话不妨用exist
      

  3.   

    SELECT per_ID, per_Name, per_Iden, per_Sex, per_SPhone, per_MPhone, per_Email, 
          DutyName, PostName
    FROM vwAllPerson
    WHERE per_Birthday in (SELECT per_Birthday FROM vwAllPerson WHERE per_Birthday > '1970' OR per_HPlace = 'ddd') and 
    per_HPlace in (SELECT per_HPlace FROM vwAllPerson WHERE per_Birthday > '1970' OR per_HPlace = 'ddd')
    GROUP BY per_ID, per_Name, per_Iden, per_Sex, per_SPhone, per_MPhone, per_Email, 
          DutyName, PostName
    ORDER BY per_ID
      

  4.   

    where...in...确实是只能有一个字段进行的,感觉用 IF EXIST会好一点,不知道和楼上的哪个效率更高一点
      

  5.   

    per_Birthday, per_HPlace IN
              (SELECT per_Birthday, per_HPlace
             FROM vwAllPerson
             WHERE per_Birthday > '1970' OR
                   per_HPlace = 'ddd') 这里有问题。。
    应该写成:per_Birthday in(SELECT per_Birthday
             FROM vwAllPerson
             WHERE per_Birthday > '1970' OR
                   per_HPlace = 'ddd') and per_HPlace in(SELECT  per_HPlace
             FROM vwAllPerson
             WHERE per_Birthday > '1970' OR
                   per_HPlace = 'ddd')
    你试试看,应该就对了。。
      

  6.   

    SELECT per_ID, per_Name, per_Iden, per_Sex, per_SPhone, per_MPhone, per_Email, 
          DutyName, PostName
    FROM vwAllPerson
    WHERE per_Birthday in (SELECT per_Birthday FROM vwAllPerson WHERE per_Birthday > '1970' OR per_HPlace = 'ddd') and 
        per_HPlace in (SELECT per_HPlace FROM vwAllPerson WHERE per_Birthday > '1970' OR per_HPlace = 'ddd')
    GROUP BY per_ID, per_Name, per_Iden, per_Sex, per_SPhone, per_MPhone, per_Email, 
          DutyName, PostName
    ORDER BY per_IDgroup by 后面好长的分组啊
      

  7.   

    SELECT per_ID, per_Name, per_Iden, per_Sex, per_SPhone, per_MPhone, per_Email, 
          DutyName, PostName
    FROM vwAllPerson
    WHERE per_Birthday > '1970' OR
                   per_HPlace = 'ddd'
    GROUP BY per_ID, per_Name, per_Iden, per_Sex, per_SPhone, per_MPhone, per_Email, 
          DutyName, PostName
    ORDER BY per_ID
    同一个表写那么多干嘛呀,直接用条件
      

  8.   

    WHERE (per_Birthday, per_HPlace IN
              (SELECT per_Birthday, per_HPlace
             FROM vwAllPerson
             WHERE per_Birthday > '1970' OR
                   per_HPlace = 'ddd'))这个换成
    WHERE (per_Birthday IN
              (SELECT per_Birthday
             FROM vwAllPerson
             WHERE per_Birthday > '1970' ))
    and  per_HPlace IN
    SELECT per_HPlace
             FROM vwAllPerson
             WHERE
                   per_HPlace = 'ddd')