sql - SQL ORDER BY 语句检索较少记录
问题描述
我有一个运行嵌入式 SQL 以从四个连接文件中检索数据的程序。当我尝试按字段(不是关键字段)对记录进行排序时,检索到的记录数从 9,999(子文件的最大值)下降到 113。我运行了相同的 SQL 语句(有和没有 ORDER BY 子句) 在 SQL Server 上,它们都返回了相同数量的记录(超过 9,999)。有没有其他人遇到过这个问题,或者我只是想做太多?
SELECT cawlaml0.WMAWID,cawlabl0.WBBLCD,cawlaml0.WMCODE,
SUBSTRING(cawlael0.WEFKEY,1,32) as WEFKEY32,
SUBSTRING(cawlael0.WETKEY,1,32) as WETKEY32,
cawlaml0.WMEFFR,cawlaml0.WMEFTO,cawlaml0.WMEFLG,
cawlaml0.WMUSED,cawladl0.WDEAAL,cawladl0.WDLORG,
cawladl0.WDLBAL,cawlael0.WEAWLN,cawladl0.WDAWPR
FROM cawlaml0
INNER JOIN cawlabl0
on cawlaml0.WMAWID = cawlabl0.WBAWID
INNER JOIN cawlael0
on cawlaml0.WMAWID = cawlael0.WEAWID
LEFT OUTER JOIN cawladl0
on cawlaml0.WMAWID = cawladl0.WDAWID
WHERE
// The '@' fields are user input fields.
(cawlael0.WEFKEY = :@WEFKEY or :@WEFKEY = ' ') and
(cawlael0.WETKEY = :@WETKEY or :@WETKEY = ' ') and
(cawlabl0.WBBLCD = :@WBBLCD or :@WBBLCD = ' ') and
(cawlaml0.WMCODE = :@WMCODE or :@WMCODE = ' ') and
cawlael0.WEAWLN = cawladl0.WDAWLN
ORDER BY WEFKEY32;
解决方案
好吧,似乎问题不在于 SQL 本身,而在于某些数据。虽然 SQL 可以检索所有记录,但我的 fetch 语句是错误的原因。我将这些字段放入屏幕中,但没有意识到有一条记录(准确地说是第 114 条)的日期错误(WMEFFR 和 WMEFTO)超出了有效范围。
获取语句:
EXEC SQL
FETCH NEXT FROM R1
INTO :WMAWID,:WBBLCD,:WMCODE,:WEFKEY32,:WETKEY32,
:WMEFFRA,:WMEFTOA,:WMEFLG,:WMUSED,:WDEAAL,
:WDLORG,:WDLBAL,:WEAWLN,:WESTAT,:WEAWEX;
SQL 表:
由于该记录在未排序列表中的位置很靠后,直到我尝试排序时我才真正遇到它,所以这个记录在我身上。
谢谢大家的答案!
推荐阅读
- python-3.x - How to sum specific columns in pandas
- vba - 尝试从 SQL 链接表打开 Recordset 时操作无效
- c++ - 使用 std::function 作为 lambda 参数调用函数
- flutter - 收到“app:transformClassesWithMultidexlistForDebug”错误
- strapi - Strapi 上传的文件管理器不显示多个文件选择
- hyperledger-fabric - TypeError: stub.GetQueryResultWithPagination 不是函数
- null - Handlebars php (LightnCandy\LightnCandy) : 每个键值对 NULL
- docker - SED 无法处理在 Dockerfile 中使用 COPY 命令复制的文件
- python - 为什么毒药在 install_command 期间看不到环境变量?
- azure-devops - 如何从拉取请求中完全保护/阻止 Azure Devops 中的分支