gpt4 book ai didi

mysql - 选择第一列,其中第二列是唯一的

转载 作者:行者123 更新时间:2023-11-29 20:55:21 25 4
gpt4 key购买 nike

我不确定如何表达我的问题,但我们开始......举一个我想要实现的目标的例子。

我有一个表,如下所示:

  -------------------
X_ID | Y_ID
-------------------
2 | 8
2 | 12
--------------------

我想为每个 X_ID 返回一行,该 X_ID 只有一个 Y_ID。

对于特定的 X_ID,如果行的 Y_ID 大于 1,我不想返回该行。而且,我只想返回所有符合上述规则的 X_ID 中的一行。

以上表为例,我需要一个查询,该查询将为该表中的数据返回 0 行。

我需要相同的查询来返回下表中的 1 行

  -------------------
X_ID | Y_ID
-------------------
2 | 8
2 | 12
3 | 19
3 | 19
-------------------

我需要一个查询,该查询将返回一行 - 底部 2 行之一。

我只需要 X_ID。

我已经尝试了尽可能多的方法,使用 DISTINCT 和 GROUP BY。

有什么想法吗?

最佳答案

奇怪的是,这在 MSSQL 中会更复杂,因为它需要您对 X_ID 和 Y_ID 进行分组;但这应该有效。通常,结果中的 Y_ID 将是该组中找到的所有 Y_ID 值的有效随机选择;但由于我们专门过滤掉了具有多个 Y_ID 的组,因此它最终就是您需要的确切 Y_ID。

SELECT X_ID, Y_ID 
FROM (
SELECT X_ID, Y_ID, COUNT(DISTINCT Y_ID) AS yCount
FROM theTable
GROUP BY X_ID
HAVING yCount = 1
) AS subQ
;
<小时/>

我不太熟悉 MSSQL 的复杂性,但我认为这会起作用(对于 MySQL 和 MSSQL)。

SELECT t1.X_ID, t1.Y_ID
FROM theTable AS t1
INNER JOIN (
SELECT X_ID, COUNT(DISTINCT Y_ID) AS yCount
FROM theTable
GROUP BY X_ID
HAVING COUNT(DISTINCT Y_ID) = 1
) AS t2 ON X_ID
;

我说认为是因为我不能100%确定MSSQL支持COUNT(DISTINCT value)

关于mysql - 选择第一列,其中第二列是唯一的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37684189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com