下面是一个完整的例子(我做到了在Oracle中,但主要的SQL查询应该可以正常上MySql
)。
CREATE TABLE USERS (ID INTEGER, validated NUMBER(1));
CREATE TABLE GROUPS (ID integer, NAME VARCHAR2(20));
CREATE TABLE groups_users (group_id integer, user_id INTEGER);
INSERT INTO USERS VALUES(1,0);
INSERT INTO USERS VALUES(1,1);
INSERT INTO USERS VALUES(2,0);
INSERT INTO USERS VALUES(3,0);
INSERT INTO USERS VALUES(3,1);
INSERT INTO GROUPS VALUES(1,'g1');
INSERT INTO GROUPS VALUES(2,'g2');
INSERT INTO GROUPS VALUES(3,'g3');
INSERT INTO groups_users VALUES (1,1);
INSERT INTO groups_users VALUES (2,2);
INSERT INTO groups_users VALUES (3,3);
SELECT
DISTINCT g.id
FROM groups g
WHERE
EXISTS (SELECT *
FROM GROUPS_USERS gu
, USERS u
WHERE gu.user_id = u.id
AND gu.group_id = g.id
AND u.validated = 0)
AND EXISTS (SELECT *
FROM GROUPS_USERS gu
, USERS u
WHERE gu.user_id = u.id
AND gu.group_id = g.id
AND u.validated = 1)
结果(组1和3具有已验证和未经验证用户):
1, 3
来源
2010-06-15 19:44:23
dcp