我正在对BD执行分页。我的问题是当我想限制SELECT语句而不是JOIN时。例如,一个产品可以得到很多价格:
SELECT * FROM product LEFT JOIN price ON product.id == price.id_product LIMIT 20
但是我想获得20种产品,每种产品都有它们的价格。我如何限制SELECT语句,但不限制LEFT JOIN语句。
例子:
product price.id price.id_pruct price.price 1 1 1 50 2 2 1 30 3 3 1 40 4 1 20 5 2 30 SELECT * FROM product LEFT JOIN price ON product.id == price.id_product LIMIT 3
返回:
product price.id id_prodcut price 1 1 1 50 1 2 1 30 1 3 1 40
但我想要
product price.id id_prodcut price 1 1 1 50 1 2 1 30 1 3 1 40 1 4 1 20 2 5 2 30 3 . . .
三种产品(限3件)
谢谢。我希望你能帮助我。
我将编写一个子查询来获得三个第一个产品(或您选择的任何条件),如下所示:
SELECT id FROM product ORDER BY id LIMIT 3;
一旦有了它,只要ID在该子查询中,我就可以从价格表中选择所有内容。您可以使用联接执行此操作:
SELECT p.* FROM price p JOIN( SELECT id FROM product ORDER BY id LIMIT 3) tmp ON tmp.id = p.product_id;
这是一个使用示例数据的SQL Fiddle示例,并且我还添加了不会返回的行,因此您可以看到它有效。