Mysql SQL限制选择但不加入

Mysql SQL限制选择但不加入,mysql,sql,select,join,limit,Mysql,Sql,Select,Join,Limit,我正在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

我正在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 *
FROM (
    SELECT *
    FROM product
    ORDER BY id_product
    LIMIT 3
) p
LEFT JOIN price ON p.id = price.id_product

希望能有所帮助。

我将编写一个子查询,以获得前三个产品(或您选择的任何条件),如下所示:

SELECT id
FROM product
ORDER BY id
LIMIT 3;
一旦有了它,我就可以从price表中选择所有内容,只要id在该子查询中。您可以使用联接来执行此操作:

SELECT p.*
FROM price p
JOIN(
   SELECT id
   FROM product
   ORDER BY id
   LIMIT 3) tmp ON tmp.id = p.product_id;

下面是一个使用示例数据的示例,我还添加了一个不会返回的行,这样您就可以看到它的工作情况。

可能重复,并且看到这一点,我也没有否决,但我怀疑原因是因为在StackOverflow上通常不鼓励只使用代码的答案。请编辑以解释您的答案。此外,对子查询进行排序是一个好主意,这样您就可以知道您得到的是哪三个结果,并且比较运算符应该有一个等号。嗯,我认为这就是解决方案:更改SELECT的顺序。我认为有一些语句或括号组合可以解决这个问题problem@jlmg5564我不明白。列在select语句中写入时的顺序是不相关的,它只在显示时起作用。这是一个解决问题的陈述,答案包含一个链接到一个例子来说明它是有效的。如果这不是你想要的,你的问题对我来说是不清楚的。很抱歉我的英语不好@McAdam331你的解决方案是正确的。感谢您在SQLFiddle中提供的示例。我在想:“选择价格,加入产品,而不是选择产品,加入他们的价格”@jlmg5564没问题,迷失在翻译中哈哈。很高兴我能帮忙!