查询中的问题

时间:2011-08-20 08:46:50

标签: php mysql

我有两张这样的桌子 的表1

Unix     |    Staffid
_____________________
534      |     65
342      |     34
232      |     232
232      |     34

表2

Staffid   |    auth
____________________
65        |  y
34        |  y
78        |  n
45        |  y

喜欢这个...... 我必须选择那些具有auth y的人员并且不在这个特定的unix上...例如在特定的unix 232我可以选择65而不是34 ...我需要所有unix值。

2 个答案:

答案 0 :(得分:0)

SELECT Staffid
FROM table2 AS t2
WHERE auth = 'y'
  AND NOT EXISTS
      ( SELECT *
        FROM table1 AS t1
        WHERE t1.Staffid = t2.Staffid
          AND t1.Unix = 232
      )

答案 1 :(得分:0)

我对这个问题的解释略有不同:

SELECT DISTINCT t1.Unix, t2.Staffid
FROM table1 t1, table2 t2
WHERE t2.auth = 'Y'
    AND t2.Staffid NOT IN (select Staffid FROM table1 WHERE Unix = t1.Unix)
    ORDER BY t1.Unix;