我有下表:
---------------------------
| id | capital_id | value |
---------------------------
| 1 | 1 | a |
---------------------------
| 2 | 2 | b |
---------------------------
| 3 | 2 | c |
---------------------------
| 4 | 2 | d |
---------------------------
| 5 | 3 | b |
---------------------------
| 6 | 3 | e |
---------------------------
| 7 | 4 | f |
---------------------------
我只需要选择不同 capital_id,但不同与给定值的。
为了更清楚,我将提供一个示例:如果我有id = 5的记录,我需要获取所有不同 capital_id,不同于3且值不同于' b'(所以要获取的capital_id是:1和4)。
我设法编写了像SELECT id FROM table WHERE capital_id != $capital_id AND value != $value
这样的查询,但重复的capital_id是以这种方式获取的。我尝试添加GROUP BY capital_id
,但是也会获取capital_id = 2,尽管其中一个值是'b'。
我该如何解决这个问题?
答案 0 :(得分:2)
SELECT capital_id
FROM tableName
WHERE capital_id <> $capital_id
GROUP BY 1
HAVING SUM(value = $value) = 0
答案 1 :(得分:0)
试试这个。
SELECT DISTINCT id FROM table WHERE capital_id != $capital_id AND value != $value
答案 2 :(得分:0)
SELECT capital_id
FROM tableName t
WHERE capital_id != $capital_id
AND NOT EXISTS(SELECT *
FROM tableName
WHERE capital_id = t.capital_id
AND value = $value)
GROUP BY capital_id