日期:2014-05-18  浏览次数:20613 次

SQL查询中出现的怪事
在对一组数据进行模糊查询时出现的这种情况:
查询的结果一共有75条记录
select     top   25   *   from   user_table
where   f_user_id   like   '%netuser% '
结果:
netuser
netuser001
....
netuser024

接下来是25个递增,当用top   64   查询的时候,结果确变了

select     top   64   *   from   txa_user_info
where   f_user_id   like   '%netuser% '
结果:
netuser001
...
netuser_064

原来的netuser这条记录却没有了

当用户top   75查时,发现这条记录出现在最后。

这就奇怪了,为什么会出现这种情况呢?
这些用户名并不连续,从netuser,netuser001-netuser025,netuser032-netuser075

我又试着添加了连续编号的用户名,这回确没有问题,
请问这是为什么呢?




------解决方案--------------------
因为数据库没有排序,它可选出任意的符合条件的前25条或前64条


------解决方案--------------------
上面這個元老說得好對,like '%% ' 是沒有排序的,
------解决方案--------------------
select top 25 * from user_table
where f_user_id like '%netuser% '

select top 64 * from txa_user_info
where f_user_id like '%netuser% '

====

是两个不同的表啊
------解决方案--------------------
select top 25 * from
(
select * from user_table where f_user_id like '%netuser% ' order by f_user_id
) t
------解决方案--------------------
不要只依赖一个字段排序,多多使用几个字段,总之使结果的顺序固定唯一即可以了.