所以我有两个查询:
查询一:
SELECT
a.memno,
a.name,
a.addr1,
a.addr2,
a.city,
a.state,
a.zip,
a.sex,
a.lname,
a.ssan,
b.addr1 AS old_addr1,
b.addr2 AS old_addr2,
b.city AS old_city,
b.state AS old_state,
b.zip AS old_zip
FROM LIB1.TABLE1 a, LIB2.TABLE2 b
WHERE (a.memno = b.memno) AND
(b.groupid = 'P2') AND
(b.type = 'B') AND
(b.datec = 20131203) AND
(a.addr1 <> b.addr1) AND
(a.addr2 <> b.addr2) AND
(a.city <> b.city) AND
(a.state <> b.state) AND
(a.zip <> b.zip)
ORDER BY b.timec DESC
返回 1 条记录。
查询 2:
SELECT
a.memno,
a.name,
a.addr1,
a.addr2,
a.city,
a.state,
a.zip,
a.sex,
a.lname,
a.ssan,
b.addr1 AS old_addr1,
b.addr2 AS old_addr2,
b.city AS old_city,
b.state AS old_state,
b.zip AS old_zip
FROM LIB2.TABLE1 a, LIB2.TABLE2 b
WHERE (a.memno = b.memno) AND
(b.groupid = 'N2') AND
(b.type = 'B') AND
(b.datec = 20131203) AND
(a.addr1 <> b.addr1) AND
(a.addr2 <> b.addr2) AND
(a.city <> b.city) AND
(a.state <> b.state) AND
(a.zip <> b.zip)
ORDER BY b.timec DESC
返回 2 条记录。
我正在尝试做一个 UNION 让这 2 个查询返回 1 个结果集。
尝试联合:
SELECT
a.memno,
a.name,
a.addr1,
a.addr2,
a.city,
a.state,
a.zip,
a.sex,
a.lname,
a.ssan,
b.addr1 AS old_addr1,
b.addr2 AS old_addr2,
b.city AS old_city,
b.state AS old_state,
b.zip AS old_zip
FROM LIB1.TABLE1 a, LIB2.TABLE2 b
WHERE (a.memno = b.memno) AND
(b.groupid = 'P2') AND
(b.type = 'B') AND
(b.datec = 20131203) AND
(a.addr1 <> b.addr1) AND
(a.addr2 <> b.addr2) AND
(a.city <> b.city) AND
(a.state <> b.state) AND
(a.zip <> b.zip)
UNION
SELECT
a.memno,
a.name,
a.addr1,
a.addr2,
a.city,
a.state,
a.zip,
a.sex,
a.lname,
a.ssan,
b.addr1 AS old_addr1,
b.addr2 AS old_addr2,
b.city AS old_city,
b.state AS old_state,
b.zip AS old_zip
FROM LIB2.TABLE1 a, LIB2.TABLE2 b
WHERE (a.memno = b.memno) AND
(b.groupid = 'N2') AND
(b.type = 'B') AND
(b.datec = 20131203) AND
(a.addr1 <> b.addr1) AND
(a.addr2 <> b.addr2) AND
(a.city <> b.city) AND
(a.state <> b.state) AND
(a.zip <> b.zip)
ORDER BY timec DESC
这给了我:
'DESC' 附近的 WHERE 子句出错。无法解析查询文本。
其次是:
SQL 执行错误。
执行的SQL语句:SELECT a.memno, a.name, a.addr1, a.addr2, a.city, a.state, a.zip, a.sex, a.lname, a.ssan, b.addr1 AS old_addr1 , b.addr2 AS old_addr2, b.city AS old_city, b.state AS old_state, b.zip AS old_zip FROM LIB1.TABLE1 a, LIB2.TABLE2 b WHERE (a.mem...
错误来源:CWBODB.DLL
错误消息:错误 [42000][IBM][System i Access ODBC 驱动程序][DB2 for i5/OS]SQL0199 - 不需要关键字 DESC。有效令牌: FOR SKIP WTIH FETCH ORDER UNION EXCEPT OPTIMIZE。
编辑:
Bangs Head不敢相信我错过了在第一次查询结束时仍然有“desc”。在第一个查询结束时去掉“desc”后,我现在得到了同样的错误,但是消息:无法限定 TIMEC 列。
编辑2:
消息:ORDER BY 列 TIMEC 或表达式不在结果表中。