当在mysql中执行下面的sql语句列表时,只返回了一行。我查找了mysql文档,但未找到该语句的已定义行为。此语句中是否存在语法错误?
select * from Deal group by id and 1;
sqlfriddle上的演示
答案 0 :(得分:1)
看看使用以下内容时会发生什么:
select *, id and 1 as newCol from Deal
newCol
每行等于1。这是因为mysql
将其评估为布尔值。这解释了为什么您只返回group by
的单个结果,您在每条记录中按相同的值进行分组。
也许您想知道当您使用逗号分组而不是使用and
时会发生什么:
select * from Deal group by id, 2
表格中的id
和第二个字段(price
)分组。