在SQLite中限制结果

时间:2013-01-10 18:21:41

标签: sql sqlite

我有两个表格,customers(列AB)和orders(列CD,{ {1}};最后一个是外键。)

此查询返回我感兴趣的数据:

A

如果我添加SELECT customers.A, customers.B, orders.C, orders.D FROM customers, orders WHERE customers.A = orders.A AND customers.B < 5 AND orders.D < 5 ,我将获得前十个10个结果(基本上是10个订单),但我想要做的是根据唯一客户的数量来限制输出。因此,结果中恰好有10个独特的客户,因此至少有10个 - 但可能更多 - 订单。我认为用子查询做到这一点是可能的,但我无法弄明白。

2 个答案:

答案 0 :(得分:2)

这样的事情:

SELECT c.A, c.B, orders.C, orders.D 
FROM (SELECT * FROM customers WHERE customers.B < 5 
      ORDER BY ....some-criteria... 
      LIMIT 10) c,
     orders
WHERE c.A = orders.A AND orders.D < 5

(已验证sqlite在子查询中成功解析LIMIT。希望它不会无声地忽略此LIMIT

答案 1 :(得分:2)

SELECT customers.A, customers.B, orders.C, orders.D 
FROM customers, orders
WHERE customers.A IN (
    SELECT DISTINCT customers.A 
    FROM customers, orders
    WHERE customers.A = orders.A AND 
          customers.B < 5 AND 
          orders.D < 5
    LIMIT 10
) AND customers.A = orders.A AND orders.D < 5 

子查询选择10个不同的客户,他们有B&lt; 5和至少一个订单,其中D < 5.主查询选择在子查询中选择的所有客户(我认为A是ID)和他们的订单,其中D&lt; 5(我们不需要再次检查B)