Mysql 如何限制唯一id的出现次数
我有三张桌子:制造商、产品和客户 我有一个问题,让我了解所有制造商及其产品和客户。我用了两个左连接 对于10个制造商,结果超过500行,因为对于products and clients表中的每个条目,结果中的一行是制造商id 我想创建一个查询:给我制造商的产品和他们的客户,但不是所有的制造商,只有10或20或一个有限的数字 我该怎么做? 我在想这个Mysql 如何限制唯一id的出现次数,mysql,sql,join,limit,Mysql,Sql,Join,Limit,我有三张桌子:制造商、产品和客户 我有一个问题,让我了解所有制造商及其产品和客户。我用了两个左连接 对于10个制造商,结果超过500行,因为对于products and clients表中的每个条目,结果中的一行是制造商id 我想创建一个查询:给我制造商的产品和他们的客户,但不是所有的制造商,只有10或20或一个有限的数字 我该怎么做? 我在想这个 SELECT * FROM manufacturer as m LEFT JOIN product as p ON ( m.mn_id = p.m
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)
我认为您可以将查询简化为以下内容,保留查询中的“随机”功能:
SELECT *
FROM (SELECT * FROM manufacturer ORDER BY RAND() LIMIT 10) 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)
ORDER BY mn_id
坦克!这就是我一直在寻找的解决方案@用户3156386如果有效,请阅读此处