嵌套选择。需要将结果限制为每个特定列值一个

时间:2014-09-23 04:39:52

标签: mysql select nested unique

我知道连续的id。我需要从表中获取包含与所选行相同的值的其他行。在这个例子中,当我只知道一行的id时,我需要共享相同pos_id和eid的所有行。我可以这样做,但我还需要将select限制为每个schedID只有一个

|--id--+--pos_id--+--eid--+--schedID--+|
|------+----------+-------|----------|
|-212--+----33----+--534--|-54------|
|-255--+----33----+--534--|--54------|
|-258--+----33----+--534--|--54------|
|-267--+----33----+--534--|-55------|
|-278--+----33----+--534--|--55------|

SELECT id FROM table 
WHERE pos_id = (SELECT pos_id FROM table WHERE id=212)
AND eid = (SELECT eid FROM table WHERE id=212)

如何将每个唯一的schedID限制为一个?

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT
      max(t.id) id, t.schedID
FROM table1 t
      INNER JOIN ( SELECT pos_id , eid FROM table1 WHERE id = 212 ) pe
                  ON t.pos_id = pe.pos_id AND t.eid = pe.eid
GROUP BY t.schedID

使用INNER JOIN允许通过pos_id和eid仅使用一个子查询来限制记录。按schedid分组可确保该字段的每个值只有一条记录。