选择不同的字段,但避免某些值

发布于 2024-11-26 15:08:23 字数 915 浏览 3 评论 0原文

我有下表:

---------------------------
| 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”。

我该如何解决这个问题?

I have the following table:

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

I need to select only distinct capital_id's, but different from one that has a value given.

To be more clear, I'll provide an example: If I have the record with id=5, I need to fetch all distinct capital_id's, different than 3 and with the value different from 'b' (so capital_id's to be fetched are: 1 and 4).

I managed to write the query like SELECT id FROM table WHERE capital_id != $capital_id AND value != $value, but duplicate capital_id's are fetched this way. I tried to add a GROUP BY capital_id, but then capital_id=2 is also fetched, although one of its values is 'b'.

How can I solve this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一城柳絮吹成雪 2024-12-03 15:08:23
SELECT capital_id 
FROM tableName
WHERE capital_id <> $capital_id
GROUP BY 1
HAVING SUM(value = $value) = 0
SELECT capital_id 
FROM tableName
WHERE capital_id <> $capital_id
GROUP BY 1
HAVING SUM(value = $value) = 0
差↓一点笑了 2024-12-03 15:08:23

试试这个。

SELECT DISTINCT id FROM table WHERE capital_id != $capital_id AND value != $value

Try this.

SELECT DISTINCT id FROM table WHERE capital_id != $capital_id AND value != $value
千と千尋 2024-12-03 15:08:23
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
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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文