使用SQL将结果限制为不同的列

时间:2009-03-03 17:16:12

标签: mysql

我正在尝试获取项目列表以及每个项目的订单信息。订单始终至少有一个与之关联的项目。我想将此列表限制为10个订单中的所有商品。正如我的查询位于下方,它会获得10个。将此限制为10个订单的最佳方法是什么,同时获取与这些订单相关的所有项目(10行还是200行)?

SELECT o.*, i.*
FROM orders o, items i
WHERE i.order_id = o.id
LIMIT 0, 10

非常感谢!

5 个答案:

答案 0 :(得分:2)

尝试使用首先限制订单的子选择。在外部选择中,您可以将所有项目提取到这10个订单。

SELECT o.*, i.*
FROM items i, (SELECT * FROM orders LIMIT 0, 10) o
WHERE i.order_id = o.id

答案 1 :(得分:2)

SELECT oo.*, i.*
FROM (
  SELECT *
  FROM orders o
  LIMIT 10
  ) oo , items i
WHERE i.order_id = oo.id

答案 2 :(得分:1)

我不知道mysql但是要猜测

SELECT o.*, i.*
FROM orders o, items i
WHERE i.order_id = o.id and 
o.id in (select o.id from orders o limit 0, 10)

答案 3 :(得分:1)

这样的事情应该有效:

SELECT o.*, i.*
FROM items i INNER JOIN orders o ON o.id = i.order_id
WHERE o.order_id IN (
  SELECT o.id
  FROM orders
  LIMIT 0, 10
)

答案 4 :(得分:1)

SELECT orders1.*, items.*
FROM
(select * from orders 
LIMIT 10) AS orders1
LEFT JOIN items ON orders1.id = items.order_id;