gpt4 book ai didi

sql - 在 SQL 中使用 distinct 函数

转载 作者:行者123 更新时间:2023-12-04 20:34:27 24 4
gpt4 key购买 nike

我有一个正在运行的 SQL 查询。我想知道的是,有没有一种方法可以选择表中的行,其中其中一列的值是不同的?当我使用 distinct 函数时,它返回所有不同的行,所以...

select distinct teacher from class etc.

这工作正常,但我选择了多个列,所以...
select distinct teacher, student etc.

但我不想检索不同的行,我想要老师不同的不同行。所以这个查询可能会多次返回同一个老师的名字,因为学生值不同,但我想要的是返回老师不同的行,即使这意味着返回老师和一个学生的名字(因为我不需要所有学生)。

我希望我想问的很清楚,但是即使在选择多列时也可以在单列上使用不同的函数,或者有没有其他解决方案可以解决这个问题?谢谢。

以上只是我举的一个例子。我不知道使用“distinct”是否可以解决我的问题。我没有使用老师等,这只是让这个想法得到理解的一个例子。我正在从不同的表中选择多个列(大约 10 个)。我有一个查询来获取我想要的表格结果。现在我想查询该表以查找特定列中的唯一值。所以再次使用老师的例子,假设我写了一个查询,我有所有的老师和他们教的所有学生。现在,我想查看此表中的每一行,并通过电子邮件向老师发送消息。但我不想多次给老师发电子邮件,一次,所以我想从我拥有的表中返回所有列,其中只有老师的值是不同的。

列 A 列 B 列 C 列 D

A B C D

a c d b

b a c

b c c c

我的查询生成了上表。现在我只需要 Col A 值唯一的那些行。我该怎么办?

最佳答案

您误解了 DISTINCT 关键字。它不是函数,也不会修改列。你不能SELECT a, DISTINCT(b), c, DISTINCT(d) FROM SomeTable . DISTINCT 是查询本身的修饰符,即您不选择不同的列,而是进行 SELECT DISTINCT 查询。

换句话说: DISTINCT 告诉服务器在执行查询后遍历整个结果集并删除所有重复的行。

如果您需要一列包含每个值一次,则需要对该列进行 GROUP BY。一旦你这样做了,服务器现在需要和每个老师一起选择哪个学生,如果有多个,所以你需要提供一个所谓的aggregate function像 COUNT()。例子:

SELECT teacher, COUNT(student) AS amountStudents
FROM ...
GROUP BY teacher;

关于sql - 在 SQL 中使用 distinct 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1164479/

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