gpt4 book ai didi

mysql - 使用 JOIN 函数

转载 作者:行者123 更新时间:2023-11-29 01:18:26 24 4
gpt4 key购买 nike

我是 MySQL 的新手,正在尝试了解有关 JOIN 函数的更多信息。

假设我有以下代码,我想找到每个级别的计数变量,然后加入两列。所以数据看起来像:

in_clicks:
one
one
one
two
three
four
four
four
four
four
five
five
six
seven
seven
seven
eight

我正在尝试生成以下输出:

four    5
one 3
seven 3
five 2
two 1
three 1
six 1
eight 1

我对 JOIN 函数一无所知,但可以使用类似于以下代码的代码来获得我想要的结果。 (它不起作用)

SELECT(SELECT * FROM in_clicks) AS keys,
(SELECT COUNT(*) FROM in_clicks) AS KeysNum;

但是,如何使用 JOIN 函数来优化我的 sql 代码?

最佳答案

你根本不需要在这里加入。假设 number 是您列出的列:

SELECT number, COUNT(number)
FROM in_clicks
GROUP BY number
ORDER BY COUNT(number) DESC

COUNT()聚合函数基本上计算行数。 (COUNT(*) 也能正常工作。)这里的魔法是 GROUP BY number , 它指示数据库根据 number 的不同值对结果进行分组;聚合函数将分别评估每个组。由于“四”组中有五行,因此对该组的 COUNT() 将产生 5。

选择 number 列是可能的,因为我们已经按它分组了;如果没有 GROUP BY number,我们将无法* 选择 number 和聚合,因为那没有意义。选择此列可以查看相应聚合结果属于哪个组。

并且 ORDER BY 子句应该是不言自明的……按该组中的行数降序排列结果。请注意,计数相同的行的顺序是未指定的;你可以做 ORDER BY COUNT(number) DESC, number ASC 如果你想先按计数降序排序,然后 number 列升序......但请注意它将进行文本比较,因此顺序为四、一、七、五、八、六、三、二。如果您仅按计数排序,那么一/七和二/三/六/八行的相对顺序将不可靠,因为它们具有相同的计数。


* 实际上 在 MySQL 中可以选择不包含在 GROUP BY 中的非聚合列,但这是非标准的并应极其谨慎地使用。了解更多信息 here

关于mysql - 使用 JOIN 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7102492/

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