我有以下查询:
SELECT pro.*
FROM tb_AutProposta pro, tb_AutParcelamento par
WHERE pro.id = par.id
但是,想将每个限制tb_AutParcelamento
为 1。尝试了“Subselect”,但没有成功。
table pro 是一个合约,par 是这个合约的包裹。对于每份合同,生成 n 个包裹,并且为每个包裹生成一个到期日,我需要知道每份合同的最后到期日。
任何的想法?
在不真正了解您的数据架构以及您正在尝试做什么的情况下,您可以尝试限制返回的 par 记录数。
SELECT pro.*, FIRST(par.Id) as FirstParcel
FROM tb_AutProposta pro, tb_AutParcelamento par
WHERE pro.id = par.id
GROUP BY pro.*
这是一个涉及检索一组记录的分组最大值/最小值的问题。我喜欢使用的方法如下:
SELECT
a.*,
b.due_date
FROM
tb_AutProposta a
INNER JOIN
tb_AutParcelamento b ON a.id = b.id
INNER JOIN
(
SELECT id, MAX(due_date) AS last_due_date
FROM tb_AutParcelamento
GROUP BY id
) c ON b.id = c.id AND b.due_date = c.last_due_date
替换due_date
为 中日期字段的实际名称tb_AutParcelamento
。
我只是编造了一些字段名称,因为我们不知道您的确切表结构。
此查询在以下假设下工作:
due_date
有字段。pro_id
(tb_AutParcelamento.pro_id
作为外键tb_AutProposta.id
)pro_id
因为我假设条件pro.id = par.id
是错误的,当id
两个表中的字段都是自动递增值和每个表中的主键时。SELECT pro.*, MAX(par.due_date) as latest_due_date
FROM tb_AutProposta pro
LEFT JOIN tb_AutParcelamento par
ON pro.id = par.pro_id
GROUP BY pro.id