所下的條件應該是少了括號才會導至這樣。((t.user_no = u.user_no) OR
      (u.user_no IN
          (SELECT user_no
         FROM subitemT, DataT1998 t
         WHERE subitemT.subitem_no = t.subitem_no AND 
               subitemT.subitem_name = '参加推进剂工作年限' AND isnumeric(t.itemdata) = 1 AND t.itemdata > 1))
)--加多一對括號試試

解决方案 »

  1.   

    (t.user_no = u.user_no) 是和后面并列的条件,怎么能加括号呢?
      

  2.   

    SELECT DISTINCT u.user_name, u.company, t.user_no
    FROM DataT1998 t CROSS JOIN
          userT u CROSS JOIN
          subitemT s
    WHERE (u.user_no IN
              (SELECT t.user_no
             FROM DataT1998 t, subitemT
             WHERE subitemT.subitem_name = '推进剂' AND t.itemdata = '密切' OR
                   t.itemdata = '不密切')) AND (u.user_no IN
              (SELECT user_no
             FROM subitemT, DataT1998 t
             WHERE subitemT.subitem_no = t.subitem_no AND 
                   subitemT.subitem_name = '参加推进剂工作年限' AND isnumeric(t.itemdata) = 1 AND (t.itemdata < 1 or t.itemdata > 1)  ))  
    ---这样行不行?干嘛不用t.itemdata <>1      AND (t.subitem_no = s.subitem_no) AND (t.user_no = u.user_no)  --t.itemdata<1 or t.itemdata>1 实际上就是t.itemdata<>1
      

  3.   

    我试过,(t.itemdata < 1 or t.itemdata > 1)  ))  不行,查出来还是错的!
    t.itemdata <>1也不行,和上面的错误答案一样。
    只有用我上面给出的那个正确例子才可以。
    why???????????
      

  4.   

    哎……
    是SQL语句只解析一半的问题。
    分该给谁呢?