Mysql 使用JOIN函数

Mysql 使用JOIN函数,mysql,sql,join,Mysql,Sql,Join,我是MySQL新手,正在尝试了解更多关于连接函数的信息 假设我有下面的代码,我想找到每个级别的 变量,然后连接两列。 因此,数据如下所示: 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

我是MySQL新手,正在尝试了解更多关于连接函数的信息

假设我有下面的代码,我想找到每个级别的 变量,然后连接两列。 因此,数据如下所示:

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函数的任何内容,我可以使用类似于以下代码的代码来获得所需的结果。(不起作用)


但是,如何使用连接函数优化sql代码?

这里根本不需要连接。假设
number
是您列出的列:

SELECT number, COUNT(number)
FROM in_clicks
GROUP BY number
ORDER BY COUNT(number) DESC
聚合函数基本上统计行数。(
COUNT(*)
也同样有效。)这里的魔法是,它指示数据库按不同的
number
值对结果进行分组;聚合函数将分别评估每个组。由于“四”组中有五行,因此该组上的
COUNT()
将产生5行

选择
编号
列是可能的,因为我们已按它分组;如果没有“按编号分组”,我们就无法*选择聚合旁边的“编号”,因为这样做没有意义。选择此列可以查看相应聚合结果所属的组

而且,
orderby
子句应该是自解释的。。。按该组中的行数降序排列结果。请注意,计数相同的行的顺序未指定;如果要先按计数降序,然后按列升序,则可以按计数(编号)描述、编号ASC进行排序。。。但请注意,这将是一个文本比较,因此顺序将是四、一、七、五、八、六、三、二。如果仅按计数排序,则1/7和2/3/6/8行的相对顺序将不可靠,因为它们的计数相等



*实际上,在MySQL中,可以选择不包含在GROUPBY中的非聚合列,但这是非标准的,应该谨慎使用。阅读更多信息。

我不相信使用联接可以做到这一点,联接设计用于连接来自多个表的数据。@mazzzz实际上,自联接是可能的(即,表与自身联接)。不过,这里并不需要这样做——正如cdhowie所解释的那样,一个简单的groupby就足够了。
JOIN
是一个关系运算符,而不是一个函数。很好的答案是,您几乎总是需要一个带有聚合的groupby。
SELECT number, COUNT(number)
FROM in_clicks
GROUP BY number
ORDER BY COUNT(number) DESC