我确信这是一个基本而古老的问题,但却无法找到正确的方法。
我有很多表学生导师
===========================
studentid | indicatorid
===========================
1 | 1
1 | 4
2 | 1
3 | 4
我想选择所有具有正好1和4作为指标的学生,因此结果应该是 1 而不是2或3.所以我不能使用
select studentid from studentindicators where indicatorid in (1,4)
P.S:1和4以逗号分隔列表的形式出现在存储过程
中答案 0 :(得分:1)
您可以使用多个子查询来选择适合两个子查询的行。 在mysql中你不能立刻测试2个单独的条件。使用AND和子查询可能就是你想要的。
SELECT * FROM studentindicators
WHERE
studentid
IN(SELECT studentid
FROM studentindicators
WHERE indicatorid
= 1)
和
studentid
IN(SELECT studentid
FROM studentindicators
WHERE indicatorid
= 4);
答案 1 :(得分:1)
我在@MichaelBadgett的帮助下得到了答案。查询是
SELECT distinct studentid FROM studentindicators WHERE studentid IN (
SELECT studentid FROM studentindicators WHERE indicatorid = 1)
AND studentid IN (
SELECT studentid FROM studentindicators WHERE indicatorid = 4);
答案 2 :(得分:0)
我没有对它进行过测试,但我很确定你可以通过编写来简化查询:
SELECT studentid FROM studentindicators WHERE indicatorid = 1 AND indicatorid = 4