我陷入了一个简单的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行的错误。
答案 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
)