可能重复: 检索每个组中的最后一条logging 我有一个表,它有三个字段和数据。 名称,顶部,总计 猫,1,10 狗,2,7 猫,3,20 马,4,4 猫,5,10 狗,6,9 我想要为每个NameselectTotal值最高的logging,所以我的结果应该是这样的: 名称,顶部,总计 猫,3,20 马,4,4 狗,6,9 按总分名次排列了,但是由于结果给了组最高的logging。 任何人都可以指导我吗?
假设我有一个客户表和一个购买表。 每笔购买都属于一个客户。 我想在一个SELECT语句中获得所有客户的列表以及最后一次购买。 最佳做法是什么? 任何关于build立索引的build议? 请在答案中使用这些表格/列名称: 客户:身份证,姓名 购买:id,customer_id,item_id,date 而在更复杂的情况下,通过将最后一次购买放入客户表中,使数据库非规范化(性能明智)是否有益? 如果(购买)ID保证按datesorting,那么可以通过使用类似LIMIT 1简化来简化语句?
我想在一个查询中返回每个部分的前10条logging。 任何人都可以帮助如何做到这一点? 部分是表格中的一列。 数据库是SQL Server 2005.我想按input的date返回前10名。 部分是业务,本地和function。 对于某个特定的date,我只需要顶部(10)业务行(最近的条目),顶部(10)本地行和顶部(10)function。
我有一个项目的数据库。 每个项目都使用类别表中的类别ID进行分类。 我正在尝试创build一个列出每个类别的页面,并在每个类别下面显示该类别中的4个最新项目。 例如: 宠物用品 img1 img2 img3 img4 宠物食品 img1 img2 img3 img4 我知道我可以很容易地通过查询每个类别的数据库来解决这个问题,如下所示: SELECT id FROM类别 然后遍历数据并查询每个类别的数据库以获取最新的项目: SELECT image FROM item category_id =:category_id ORDER BY date_listed DESC LIMIT 4 我想知道的是,如果我可以只使用1个查询,并抓住所有的数据。 我有33个类别,所以我想也许这将有助于减less对数据库的调用数量。 任何人都知道这是可能的吗? 或者,如果33个电话不是什么大事,我应该简单的做。
你如何获得包含每个分组集合的最大值的行? 我在这个问题上看到了一些过于复杂的变化,没有一个答案很好。 我试图把最简单的例子放在一起: 给出如下的表格,包括人员,组别和年龄栏,你将如何得到每组中最年长的人? (一个组内的领带应该给第一个字母的结果) Person | Group | Age — Bob | 1 | 32 Jill | 1 | 34 Shawn| 1 | 42 Jake | 2 | 29 Paul | 2 | 36 Laura| 2 | 39 预期结果集: Shawn | 1 | 42 Laura | 2 | 39
以下是最简单的例子,尽pipe任何解决scheme都应该能够扩展到n个最需要的结果: 给出如下的表格,包括人员,组别和年龄栏,你将如何得到每个组中的两个最老的人? (组内联系不应该产生更多的结果,但按字母顺序给出前两个) + ——– + ——- + —– + | 人| Group | 年龄| + ——– + ——- + —– + | Bob | 1 | 32 | | 吉尔| 1 | 34 | | Shawn | 1 | 42 | | 杰克| 2 | 29 | | 保罗| 2 | 36 | | […]
我的表是: id home datetime player resource —|—–|————|——–|——— 1 | 10 | 04/03/2009 | john | 399 2 | 11 | 04/03/2009 | juliet | 244 5 | 12 | 04/03/2009 | borat | 555 3 | 10 | 03/03/2009 | john | 300 4 | 11 | 03/03/2009 | juliet | 200 6 | 12 […]
有一个表格messages包含如下所示的数据: Id Name Other_Columns ————————- 1 A A_data_1 2 A A_data_2 3 A A_data_3 4 B B_data_1 5 B B_data_2 6 C C_data_1 如果我运行一个查询select * from messages group by name ,我会得到结果如下: 1 A A_data_1 4 B B_data_1 6 C C_data_1 什么查询将返回以下结果? 3 A A_data_3 5 B B_data_2 6 C C_data_1 也就是说,每个组中的最后一个logging应该被返回。 目前,这是我使用的查询: select * from […]
正如标题所暗示的,我想select用GROUP BY分组的每一组行的第一行。 具体来说,如果我有一个purchases表,看起来像这样: SELECT * FROM purchases; id | 客户| 总 — + ———- + —— 1 | 乔| 五 2 | 莎莉| 3 3 | 乔| 2 4 | 莎莉| 1 我想查询每个customer所做的最大购买( total )的id 。 像这样的东西: SELECT FIRST(id), customer, FIRST(total) FROM purchases GROUP BY customer ORDER BY total DESC; FIRST(id)| 客户| FIRST(总) ———- + […]
我有这张表格(这里是简体版): +——+——-+————————————–+ | id | rev | content | +——+——-+————————————–+ | 1 | 1 | … | | 2 | 1 | … | | 1 | 2 | … | | 1 | 3 | … | +——+——-+————————————–+ 我如何select每行一个行,只有最大的转? 有了上述数据,结果应该包含两行: [1, 3, …]和[2, 1, ..] 。 我正在使用MySQL 。 目前我在while循环中使用检查来检测和覆盖结果集中的旧版本。 但是这是实现结果的唯一方法吗? 是不是有一个SQL解决scheme? 更新 正如答案所示,有一个SQL解决scheme, 这里是一个sqlfiddle演示 […]