这个问题在这里已经有答案了:
sql仅选择列上具有最大值的行[重复](27个答案)
两年前关门了。
我正在尝试只在“名称”列中选择唯一的条目。我尝试过使用这个查询,但它不会返回相同的价格。我也尝试过其他的变体,但都没有成功。
SELECT DISTINCT name, price from table;
这是我正在使用的表:
+----+-------------------+
| id | name | price |
+----+-----------+-------+
| 1 | Henry | 20 |
| 2 | Henry | 30 |
| 3 | Robert | 20 |
| 4 | Joshua | 10 |
| 5 | Alexander | 30 |
+----+-----------+-------+
我想要的结果是:
+----+-------------------+
| id | name | price |
+----+-----------+-------+
| 1 | Henry | 20 |
| 3 | Robert | 20 |
| 4 | Joshua | 10 |
| 5 | Alexander | 30 |
+----+-----------+-------+
所需的输出,如你所知,只删除了重复的名称,没有价格。有什么我可以添加到我的查询上面只选择唯一的条目在名称列?任何帮助是非常感谢,因为我已经试图找到一个解决方案在这里,谷歌,duckduckgo等没有运气。
3条答案
按热度按时间3gtaxfhh1#
从您的示例数据来看,这应该是可行的。
pu3pd22g2#
这是什么
GROUP BY
用于:通常人们会遇到麻烦,因为当一个给定的名称有多个匹配项时,他们会得到一个任意选择的行—您必须使用聚合函数来选择一个特定的行,例如“价格最高的行”。
但在您的情况下,因为您似乎不关心返回哪一行,所以这是完美的。
uxh89sit3#
所以您想选择不同的行列表,然后从表中选择给定的整行?尝试此查询,其中临时查询只是一个uniqueid列表,然后将该行链接回表。
这是sql查询中的一个常见问题,我们希望使用给定的全行数据,但filter使用的是distinct/groupby公式。