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

标签 mysql sql join limit

我有 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/

相关文章:

php - 使用存储在 MySQL DB 中的 PHP 在字符串中添加数字

php - 查询使用 COUNT 和 JOIN 所需的帮助

sql - 使用 JOIN sql 从 2 个不同的表中获取数据。代码点火器

mysql - 如何从表中检索学生信息?

mysql - 如何缩短多个 LIKE

Mysql 从加载文件中的另一个表中选择

java - Hibernate - OneToMany,每次引用不同的表,无需交叉引用表

mysql - 如何选择每列都不匹配值的所有行?

sql - 您如何在 HiveQL 中获取“事件日期 > 当前日期 - 10 天)?

sql - 我可以在 OVER 子句中使用变量而不是整数吗