我有 3 个表:制造商、产品和客户 我有一个查询,可以让我了解所有制造商及其产品和客户。我用两个左连接做到了这一点。
对于 10 个制造商,结果超过 500 行,因为对于产品和客户表中的每个条目,结果中的一行都带有制造商的 ID。
我想创建一个查询:为我提供制造商及其产品和客户,但不是所有制造商,只有 10 个或 20 个或有限数量。
我该怎么做? 我正在思考这个问题..
SELECT *
FROM manufacturer as m
LEFT JOIN product as p ON ( m.mn_id = p.man_mn_id )
LEFT JOIN client as c ON ( m.mn_id = c.man_mn_id )
WHERE m.mn_id IN ( SELECT mn_id
FROM manufacturer
WHERE mn_id >= ( SELECT FLOOR( MAX(mn_id) * RAND() )
FROM manufacturer
)
ORDER BY mn_id
LIMIT 10
)
或者他们是更好的方法吗?
最佳答案
您可以通过限制制造商来尝试此操作,它将获得 10 个制造商,并将这些制造商加入到他们的产品和客户中
SELECT
*
FROM
(SELECT
*
FROM
manufacturer
ORDER BY id DESC
LIMIT 10) AS m /* you can change limit to 20 or something you want */
LEFT JOIN product AS p
ON (m.mn_id = p.man_mn_id)
LEFT JOIN CLIENT AS c
ON (m.mn_id = c.man_mn_id)
关于mysql - 如何限制唯一id出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21286867/