我目前正在尝试仅在名称列中选择唯一条目。我尝试使用此查询,但它不会返回相同的价格。我尝试了其他变体也没有成功。
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 |
+----+-----------+-------+
您可以看到,所需的输出仅删除了重复的名称,没有价格。我可以在上面的查询中添加一些内容,以便仅在“名称”列中选择唯一的条目吗?非常感谢任何帮助,因为我试图在这里找到解决方案,例如Google,DuckDuckGo等,但是没有运气。
答案 0 :(得分:0)
根据您的示例数据,这应该可以工作。
SELECT MIN(Id) AS Id, name, MIN(price) AS price
FROM table
GROUP BY name;
答案 1 :(得分:0)
GROUP BY
的用途是
SELECT * FROM `table` GROUP BY `name`
通常是人run into trouble,因为当给定名称有多个匹配项时,他们现在将得到任意选择的行-您必须使用聚合函数来选择特定的行,例如“价格最高的那个”。
但是在您的情况下,由于您似乎并不关心返回哪一行,因此按原样完美。
答案 2 :(得分:0)
因此,您要选择不同的行列表,然后从表中选择给定的整个行?请尝试以下查询,其中临时查询只是唯一ID的列表,然后将该行链接回表。
Select n.*
From nameprices n
Join (Select MIN(id) as id
From nameprices
Group by name
Order By id) aTemp On (aTemp.id=n.id);
这是SQL查询中的一个常见问题,我们要使用给定的全行数据,但过滤器使用的是不重复/分组方式。