如何仅在MySQL中获取特定ID的结果

时间:2016-06-29 05:03:18

标签: mysql

我正在研究大学ERP软件,我无法在以下问题上找到解决方案。我在这里解释一下这个问题

表学生。

+----+--------+--------+
| id | enroll | sub_id |
+----+--------+--------+
|  1 |      1 |      1 |
|  2 |      1 |      2 |
|  3 |      2 |      1 |
|  4 |      2 |      2 |
|  5 |      2 |      3 |
|  6 |      3 |      1 |
|  7 |      3 |      2 |
+----+--------+--------+

要求 - 在学生表中,仅获取那些注册号码。其中包含sub_id 1& 2如果有任何注册号码。分配1,2& 3那么它不应该进入结果。

我尝试使用 IN 功能,但我不会给出正确的结果。 请建议我解决这个问题。 感谢名单...

2 个答案:

答案 0 :(得分:0)

使用条件聚合:

SELECT t1.id, t1.enroll, t1.sub_id
FROM Student t1
INNER JOIN
(
    SELECT enroll,
        SUM(CASE WHEN sub_id IN (1, 2) THEN 1 ELSE 0 END) AS subCount
    FROM Student
    GROUP BY enroll
    HAVING subCount = 2 AND COUNT(*) = 2
) t2
    ON t1.enroll = t2.enroll

此查询中的技巧是HAVING子句,该子句限制注册了(1, 2)子注册, (1, 2)子注册的注册。

请按照以下链接查看正在运行的演示:

SQLFiddle

答案 1 :(得分:0)

我很难确切地从你的描述中找出你想要的东西,但这会为你的例子返回1,3

SELECT DISTINCT enroll FROM Student
WHERE enroll NOT IN 
(SELECT enroll FROM Student WHERE sub_id NOT IN (1,2))