SQL查询表中的每个ID

时间:2016-04-05 08:27:15

标签: mysql sql

我有一个特定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

2 个答案:

答案 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