尝试这样:
SELECT (SELECT MAX(DATE)
FROM (SELECT DATE
FROM PAYMENTS P
WHERE P.INVOICE_ID = IN.INVOICE_ID
UNION
SELECT DATE
FROM SENDS S
WHERE S.INVOICE_ID = IN.INVOICE_ID) SUB) MAX_DATE,
IN.*
FROM INVOICE IN
ORDER BY 1 DESC
LIMIT 5
更新:
的SQL上述方法无效,因为该表发票不能分选第二级别内进行访问。
试试这个选择:
SELECT V.*
FROM verkoopfacturen AS V
LEFT JOIN (SELECT invoice_id,
MAX(datum) as max_date
FROM (SELECT P.invoice_id,
P.date AS datum
FROM invoice_payments AS P
UNION
SELECT S.file_id,
S.datum AS datum
FROM email AS S) SUB
GROUP BY SUB.invoice_id) SUB2 on V.Verkoopfact_InfId = SUB2.invoice_id
ORDER BY SUB2.MAX_DATE DESC
LIMIT 5
thanx您的答案,但我不能使它发挥作用。首先我得到一个错误:每个派生表都必须有自己的别名 – 2013-02-22 11:15:45
尝试将别名添加到第一列的第一个子查询中,我更新了将'SUB'作为别名的答案。 – 2013-02-22 11:21:06
我尝试这样做:SELECT ( \t SELECT MAX(基准面) FROM ( \t SELECT P.date AS基准 FROM invoice_payments为P WHERE P.invoice_id = V.Verkoopfact_InfId UNION SELECT S.datum为基准 从电子邮件为S WHERE S.file_id = V.Verkoopfact_InfId \t) SUB ) MAX_DATE,五* FROM verkoopfacturen为V ORDER BY 1 DESC LIMIT 5但是,我收到一个错误:'where子句'中的未知列'V.Verkoopfact_InfId'奇怪,因为我确信列存在。 – 2013-02-22 11:55:15