MySQL限制"主要"使用左连接时的结果?

时间:2014-07-09 13:49:18

标签: mysql sql

我陷入了一个简单的MySQL查询,我无法解决这个问题(这里有点晚了)。如果这个答案很容易找到,我很抱歉,我花了半个小时的时间搜索并希望将其解决。

我想将“主要”查询的结果(非连接值)限制为10。

SELECT
  i_item_id AS itemId,
  v_value_id AS valueId,
  v_value_title AS valueTitle
FROM items
LEFT JOIN items_values ON iv_item_id=i_item_id
LEFT JOIN values ON v_value_id=iv_value_id
LIMIT 10

但是,由于每个项目的值大约为4-5,因此限制“填满”了valueIds,这留给我2-3个项目。如何编写上面的查询,以便获得10个项目,并根据需要获得尽可能多的valueIds?

我尝试在SELECT字段中使用子查询,但是我得到一个关于子查询返回超过1行的错误。

2 个答案:

答案 0 :(得分:1)

您是否应该只能在子查询中限制结果,然后执行连接... 虽然我认为你想通过获得“正确”10来提供订单。

SELECT
  i_item_id AS itemId,
  v_value_id AS valueId,
  v_value_title AS valueTitle
FROM (Select * from items limit 10) items
LEFT JOIN items_values ON iv_item_id=i_item_id
LEFT JOIN values ON v_value_id=iv_value_id

答案 1 :(得分:0)

以下查询应该有效。基本上,只有这些ID才能获得10个项ID和查询结果。

但是,您可能希望添加ORDER BY子句,否则您将获得随机结果。

SELECT 
    i_item_id AS itemId,
    v_value_id AS valueId,
    v_value_title AS valueTitle
FROM items
    LEFT JOIN items_values ON iv_item_id = i_item_id
    LEFT JOIN values ON v_value_id = iv_value_id
WHERE i_item_id IN (SELECT i_item_id
                    FROM items
                    LIMIT 10
                   )