我从表中获取一些数据。假设我的查询是这样的
select ename from emp where job="clerk"
这也是返回重复的ename,但是按顺序返回。
我将其修改为
select distinct ename from emp where job="clerk"
我这样做是为了避免重复值。但是ename按字母顺序升序排列。但我想按照我输入数据的顺序,而不是使用不同的。
答案 0 :(得分:3)
SQL表中的数据没有固有的顺序。如果您需要订单,则必须使用ORDER BY
指定。如果您使用DISTINCT
,则只能按您选择的列进行排序!
如果您有PK,这将是近似值:
select distinct id,ename from emp where job="clerk" order by id desc
从较早的answer开始(我知道这会有所帮助):
除非您指定ORDER BY,否则无法保证哪些行 将首先归还。
但实际上,订单通常会与聚集索引匹配 订单,并且不会因电话而异。不要依赖这种行为。
Does MySQL's LIMIT keyword guarantee order of returned data?
没有默认的排序顺序。即使表有集群 index,您无法保证按该顺序获得结果。您 如果您想要特定订单,必须使用order by子句。
SQL best practice to deal with default sort order
...
答案 1 :(得分:1)
如果你的表有auto_increment键(id),你可以试试这个:
SELECT ename FROM emp WHERE job="clerk" GROUP BY ename ORDER BY id