我正在进行类似的搜索:
select id, company_name from cars where company_name='Audi';
输出结果为:
+--------+----------------------+
| id | company_name |
+--------+----------------------+
| 349115 | Audi |
| 349117 | Audi |
| 349118 | Audi |
| 349119 | Audi |
| 349120 | Audi |
| 349121 | Audi |
| 349122 | Audi |
| 349123 | Audi |
因为我想只看一次汽车公司一次,所以:
select id, company_name from cars where company_name='Audi' group by company_name;
输出:
+--------+----------------------+
| id | company_name |
+--------+----------------------+
| 349115 | Audi |
我只返回了一条记录,并且该记录的表中ID最低。这就是我想要的。我一直在测试这个,如果搜索有多个记录(找到汽车),group by
总是返回ID最低的记录(作为第一个记录输入到数据库的记录)。
这是一个规则group by
还是仅仅是巧合? group by
总是返回ID最低的记录,所以我可以依赖它吗?
答案 0 :(得分:0)
GROUP BY
无法保证返回第一行;它返回不确定行的值。你不应该使用这种结构,只能在MySQL中使用。
使用join
和group by
:
select c.*
from cars c join
(select company_name, min(id) as minid
from cars
group by company_name
) cc
on c.id = cc.minid;
如果您有一家公司并想要一行:
select c.*
from cars c
where company_name = 'Audi'
order by id
limit 1;
答案 1 :(得分:0)
不,您不能依赖于此,但您可以在不属于group by子句的列上使用聚合函数,因此您可以将min(id)