(已解决,不知道怎么改成已解决)请教关于SQL查询中数据排序的问题
本帖最后由 ahphsautoit 于 2013-2-28 10:59 编辑如SQL数据表A中有1-12个记录项,其列位IDS(主键)分别为1-12。查询IDs列位并按IDs反向排序,理想结果应为:12、11、10……1,但实际排序结果是9、8、7……12、11、10、1。#创建表的新主键值并返回新主键值
;$a:表名
Func _sql07($a)
Dim $07a, $07b, $07c
$07c=1
_SQLite_Query(-1, "SELECT IDs FROM " & $a & " ORDER BY IDs DESC;", $07a);
While _SQLite_FetchData($07a, $07b) = $SQLITE_OK
ExitLoop
WEnd
$07c=$07b+1
_SQLite_Exec(-1, "insert into " & $a & " (IDs) values (" & $07c & ");")
Return $07c
EndFunc ;==>_sql07目前采用的实现方法是:将IDs的所有记录写入一个数组,再得出数组的最大值,如果数据表内的记录量大了,这种方法显然费时又费力。
上述提到的数据排序的问题,在普通的AU3默认的列表里也是一样,不按输入列表的顺序 ,而是按1、10、11、12、2……9这样排的,请问是为什么?还是我的某个关于数据排序的默认设置不对?#创建表的新主键值并返回新主键值
;$a:表名
Func _sql07($a)
Dim $07a, $07b, $07c,$07d,$07e
$07c=1
_SQLite_Query(-1, "SELECT IDs FROM " & $a & " ORDER BY IDs;", $07a);
While _SQLite_FetchData($07a, $07b) = $SQLITE_OK
If $07c=1 Then $07d=$07b
$07c=$07c+1
_arrayadd($07d,$07b)
WEnd
$07e=_ArrayMax($07d,1)+1
_SQLite_Exec(-1, "insert into " & $a & " (IDs) values (" & $07e & ");")
Return $07e
EndFunc ;==>_sql07 不会是SQLite不靠谱吧?SQLServer表示木有问题。 另外你主键那一列是什么数据类型?莫非不是int或者bigint才会有这种情况? 数据库满人 回复 1# ahphsautoit
大哥 那是因為你那欄的資料型態是文字......所以 當然是照你上面所說的排序
只要改型態改變 或者轉換一下在排序 就可以了 回复 3# nmgwddj 明白了,谢谢啦! 回复 5# kk_lee69
明白了,谢谢啦!
页:
[1]