SELECT
tr.ID
, (SELECT te.ID
FROM "Terminal" te
WHERE te.TERMINALID = tr.TERMINALID
ORDER BY te.EXPORT_DATE DESC
LIMIT 1
) AS the_id -- <<-- add an alias for the column
FROM "Transaction" tr
;
UPDATE:
length for type varchar cannot exceed 10485760
- 只是使用类型
varchar
(或text
)代替
在这里工作(带引号标识符):
CREATE TABLE "Transaction" ("ID" VARCHAR(123), "TERMINALID" VARCHAR(123)) ;
CREATE TABLE "Terminal" ("ID" VARCHAR(123), "TERMINALID" VARCHAR(123), "EXPORT_DATE" DATE);
SELECT tr."ID"
, (SELECT te."ID"
FROM "Terminal" te
WHERE te."TERMINALID" = tr."TERMINALID"
ORDER BY te."EXPORT_DATE" DESC
LIMIT 1) AS meuk
FROM "Transaction" tr
;
BONUS UPDATE:避免标量子查询和使用普通的老NOT EXISTS(...)
与最近的日期以获得记录:
SELECT tr."ID"
, te."ID" AS meuk
FROM "Transaction" tr
JOIN "Terminal" te ON te."TERMINALID" = tr."TERMINALID"
AND NOT EXISTS (SELECT *
FROM "Terminal" nx
WHERE nx."TERMINALID" = te."TERMINALID"
AND nx."EXPORT_DATE" > te."EXPORT_DATE"
)
;
如果子查询应该是*标量*子查询?顺便说一句:将一个列别名添加到子查询。 – wildplasser
是的,子查询应该从一行返回一列值。因此,有LIMIT。 – michal4
请将表格的表格定义添加到您的问题中。 (表格列名称是否真的是混合/上层?) – wildplasser