Mysql 如何限制唯一id的出现次数

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

我有三张桌子:制造商、产品和客户 我有一个问题,让我了解所有制造商及其产品和客户。我用了两个左连接

对于10个制造商,结果超过500行,因为对于products and clients表中的每个条目,结果中的一行是制造商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)

我认为您可以将查询简化为以下内容,保留查询中的“随机”功能:

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如果有效,请阅读此处