使用条件WHERE子句选择表的字段

时间:2014-06-20 14:53:26

标签: mysql sql where-clause conditional-statements

我在MySql中有3个左连接表。

contratos,用于存储客户数据

funcionario,用于存储员工数据

cobranca,存储每个客户的费用。

我想根据费用status生成报告。但每个客户费用都有很多status,我想要检索当前的status

以下代码返回cobrancas表的最后一次更新。

SELECT cob.status, cob.created, con.data_venda, cpn.contrato, con.razao_social, con.cnpj, con.valor, f.nick
FROM cobrancas cob
LEFT JOIN contratos con
ON c.id = cob.contrato
LEFT JOIN funcionarios f
ON f.id = cob.cobrador
WHERE 1=1
ORDER BY cob.created DESC
LIMIT 1

但它没有status过滤器返回。如果我放置一个像cob.status = 'x'这样的WHERE子句,它会返回带有此status的最后一条记录,但它可能不是最新的。那么我如何检查cob.status是否是WHERE子句中的当前status来决定我是否将它放入列表中?类似的东西:

WHERE IF(cob.status == the last status inserted AND cob.status == 'x')

你能理解我想做什么吗?谢谢。

1 个答案:

答案 0 :(得分:0)

使用子查询的一种解决方案

select * from
(
SELECT cob.status, cob.created, con.data_venda, cpn.contrato, con.razao_social, con.cnpj, con.valor, f.nick
FROM cobrancas cob
LEFT JOIN contratos con
ON c.id = cob.contrato
LEFT JOIN funcionarios f
ON f.id = cob.cobrador
WHERE 1=1
ORDER BY cob.created DESC
LIMIT 1
) where status = 'X'