选择id =多个值(多对多)

时间:2017-03-27 23:26:41

标签: mysql

我确信这是一个基本而古老的问题,但却无法找到正确的方法。

我有很多表学生导师

===========================

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以逗号分隔列表的形式出现在存储过程

3 个答案:

答案 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