我有一个特定customer_id的查询。如何为表中的每个customer_id执行此查询?
SELECT *
FROM table
WHERE date <= '2015-12-31 23:59:59' AND customer_id = 100
ORDER BY date DESC
LIMIT 1
答案 0 :(得分:1)
您可以使用NOT EXISTS()
:
SELECT * FROM YourTable t
WHERE t.date <= '2015-12-31 23:59:59'
AND NOT EXISTS(SELECT 1 FROM YourTable s
WHERE t.customer_id = s.customer_id
AND t.date < s.date)
这将仅在日期过滤器之后选择一条记录,其中NOT EXISTS
具有更大日期的相同ID的另一条记录。它与所有人的limit 1
基本相同。
答案 1 :(得分:0)
您可以使用内部联接
从YourTable t内连接中选择*(从表中选择*) 在t.customer_id = s.customer_id上 其中t.date =&#39; 2015-12-31 23:59:59&#39; 按日期排序desc