[英]Two queries returned different result
我对SQL查询有问题。 我有两个几乎相同的查询,不同之处在于第一个查询仅返回一个列id
,第二个查询返回所有列*
。 查询如下:
查询1:
SELECT id
FROM `import_data`
WHERE 1 AND parent IS NULL
ORDER BY CONCAT(category_1, COALESCE(category_2, ""), COALESCE(category_3, "")) DESC;
查询2:
SELECT *
FROM `import_data`
WHERE 1 AND parent IS NULL
ORDER BY CONCAT(category_1, COALESCE(category_2, ""), COALESCE(category_3, "")) DESC;
即使我指定了相同的ORDER BY
,每个查询的结果顺序也不同。
如果您有多个行,其中CONCAT(category_1, COALESCE(category_2, ""), COALESCE(category_3, ""))
相同CONCAT(category_1, COALESCE(category_2, ""), COALESCE(category_3, ""))
则会得到不同的订单。
在键值相同的情况下,SQL如何排序行? 答案是排序是任意的,并且可以从一个查询更改为下一个查询。 SQL 不保证稳定的排序,这意味着最终的排序顺序,当有关系,是不确定的。
我建议您只将id
添加到order by
子句:
ORDER BY CONCAT(category_1, COALESCE(category_2, ""), COALESCE(category_3, "")) DESC, id
如果id
是唯一的,则两个查询将返回相同的顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.