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
[解决办法]
不要只依赖一个字段排序,多多使用几个字段,总之使结果的顺序固定唯一即可以了.