SQL - 选择不同的只有一列
如何从几列中选择,但只能从其中一列选择DISTINCT
结果?这是我现在所拥有的:SQL - 选择不同的只有一列
SELECT DISTINCT(ur.user_by), urs.username
FROM
(SELECT *
FROM users
LIMIT 10
) AS ur
LEFT JOIN
people AS urs
ON
ur.user_by = urs.username
LIMIT 10
虽然,DISTINCT(user_by)
不起作用。
GROUP BY urs.username
与MAX(urs.username)
会给你不同的值用户名:
SELECT ur.user_by, MAX(urs.username) AS username
FROM
(SELECT *
FROM users
LIMIT 10
) AS ur
LEFT JOIN
people AS urs
ON
ur.user_by = urs.username
GROUP BY ur.user_by
LIMIT 10;
为了得到不同的值,你必须使用GROUP BY
与集合函数来仅选择一个行每个组。在你的情况MAX
将工作找到username
,并且只为user_by
的每个组选择一个值。
更新:
只选择10从用户表中是唯一的用户,可以使用DISTINCT user_by
与LIMIT 10
子查询自身内部,就像这样:通过
SELECT ur.user_by, MAX(urs.username) AS username
FROM
(
SELECT DISTINCT user_by
FROM users
LIMIT 10
) AS ur
LEFT JOIN
people AS urs
ON
ur.user_by = urs.username
GROUP BY ur.user_by
LIMIT 10;
尝试使用GROUP BY
SELECT ur.expire, ur.user_by, urs.username
FROM
(SELECT *
FROM users
LIMIT 10
) AS ur
LEFT JOIN
people AS urs
ON
ur.user_by = urs.username
GROUP BY ur.user_by, urs.username,ur.expire
LIMIT 10
小心解释?我(诚实地)在没有聚合时(使用'select DISTINCT ...'而不是OP的无效语法当然)没有看到'DISTINCT'和'GROUP BY'之间的区别 –
这个答案无效,他所做的只是将独特的内容添加到整个子句中,这几乎是我们知道OP不需要的唯一行为。 –
@JulienBlanchard事实上,我不知道OP在找什么。 –
尝试使用组。我认为是好主意 – starko
应该在哪里添加?你介意发布一个例子吗?对SQL来说很新鲜。 – oliverbj
请添加一些示例数据和您正在寻找的所需输出 –