我有两个表格,customers
(列A
,B
)和orders
(列C
,D
,{ {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个 - 但可能更多 - 订单。我认为用子查询做到这一点是可能的,但我无法弄明白。
答案 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)