SQL:GROUP BY记录,然后从每个组获取最后一条记录? [重复]


可能重复:</ strong>

SQL Server:只有GROUP BY中的最后一个条目 </ p>
< / blockquote>

我有一个这样的表:</ p>

  id | 名字| 注意
1 | 函数naveed | 1
2 | 函数naveed | 1
3 | Adil | 1
4 | Adil | 1
</ code> </ pre>

我使用以下查询:</ p>

  SELECT * FROMtest WHEREedteedence = 1 GROUP 按名称
</ code> </ pre>

上述查询的结果:</ p>

  id | 名字| 注意
3 | Adil | 1
1 | Naveed | 1
</ code> </ pre>

问题:</ h1>

按名称排列结果组行,但显示每个组的第一行。 我想从每个组中选择最后一行(按id)。</ p>

例如:</ p>

  id | 名字| 注意
2 | Naveed | 1
4 | Adil | 1
</ code> </ pre>

如何为上述结果编写查询。</ p>

谢谢</ p>
</ div>

展开原文

原文

Possible Duplicate:
SQL Server: Only last entry in GROUP BY

I have a table like this:

id| name  | attendence
1 | Naveed| 1
2 | Naveed| 1
3 | Adil  | 1
4 | Adil  | 1

I use following query:

SELECT * FROM `test` WHERE `attendence`=1 GROUP BY name

The result with above query:

id| name   | attendence
3 | Adil   | 1
1 | Naveed | 1

Question:

Above result group rows by name but show first row from each group. I want to select last row(by id) from each group.

For example:

id| name   | attendence
2 | Naveed | 1
4 | Adil   | 1

How to write query for above result.

Thanks

dqiaw48488
dqiaw48488 php.azerot.com/sql-group-by-get-last-record-from-each-group这里对你的问题答案是同样的问题
8 年多之前 回复
dongwei3120
dongwei3120 假设NAVEED正在使用MySQL:dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html
大约 10 年之前 回复
douhe1002
douhe1002 SELECT*FROMtestWHEREattendence=1GROUPBYname抛出错误?
大约 10 年之前 回复

4个回答



  SELECT a。* 
FROM test a
WHERE a.attendence = 1
AND NOT EXISTS(从test中选择1) name = a.name和id&gt; a.id和attendence = 1)
GROUP BY name
</ code> </ pre>

甚至可能不再需要该组了。</ p >
</ div>

展开原文

原文

SELECT a.* 
FROM test a 
WHERE a.attendence = 1 
AND NOT EXISTS (select 1 from test where name = a.name and id > a.id and attendence = 1)
GROUP BY name 

Might not even need the group by anymore.

dongtangyi8962
dongtangyi8962 它正在发挥作用。谢谢。
大约 10 年之前 回复



  SELECT MAX(“id”),“name”FROM“test”WHERE“attendence”= 1 GROUP BY“name  “
</ code> </ pre>
</ div>

展开原文

原文

SELECT MAX("id"), "name" FROM "test" WHERE "attendence" = 1 GROUP BY "name"



  SELECT Name,Max(ID)FROM table WHERE attendance = 1 GROUP BY Name 
</ code> </ pre >
</ div>

展开原文

原文

SELECT Name, Max(ID) FROM table WHERE attendance = 1 GROUP BY Name

使用以下查询:</ p>

= 1 GROUP BY name ORDER BYid` DESC LIMIT 1
</ code> </ pre>

这将只选择符合id最高标准的行。</ p>

</ div>

展开原文

原文

Use the following query:

SELECT * FROM `test` WHERE `attendence`=1 GROUP BY name ORDER BY `id` DESC LIMIT 1

That will only select the row that meets the criteria with the highest id.

douwen9540
douwen9540 你是对的。 我确实误解了这个问题。 Fosco似乎有最好的答案imo。
大约 10 年之前 回复
du1843
du1843 你不明白我的问题。 我想获得所有组,但每个组应该由该组的最后一行表示。
大约 10 年之前 回复
dongzhila3786
dongzhila3786 是的,它只给你一个记录。 这就是LIMIT 1的用途。 你声明你只想要最后一排。 这将只给出基于id的最后一行。 如果您仍想要返回所有行,请取消短语LIMIT 1。
大约 10 年之前 回复
dongrenshi0889
dongrenshi0889 它只给我一个记录。 订单依据在此处之后应用。
大约 10 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐