MySQL查询没有特定相关记录的记录

时间:2015-11-08 01:55:16

标签: mysql

很多客户。有些人有发票。有些人的元记录显示了他们所属的电子邮件列表。

我需要找到30天内没有发票的客户(但如果他们根本没有发票,或者发票较旧),并且没有特定的电子邮件元记录(&#39) ;如果他们根本没有元记录或其他类型的元记录,则可以。)

最近的我可以用这个问题来判断这个问题(用简单的英语)将是"没有"条件:

select * from customers
left join invoices on …
and also left join meta on …
NOT HAVING invoice_date > 30 days ago AND
NOT HAVING meta_value=unwanted_list

唉。任何人吗?

2 个答案:

答案 0 :(得分:1)

左连接是个好主意,但你必须使用子查询。另一种解决方案是使用not exists子查询:

select c.* from customers c
where not exists (select 1 from invoices customer_id=c.id and invoice_date>=curdate()-30)
and not exists (select 1 from meta_value where customer_id=c.id and meta_value=...)

答案 1 :(得分:0)

那样的?

SELECT * FROM customers
LEFT JOIN invoices ON...
LEFT JOIN meta ON...
WHERE invoice_date < NOW() - INTERVAL 30 DAY
AND meat_value NOT LIKE...