【问题标题】:SQL query distinct with additional selectSQL 查询与附加选择不同
【发布时间】:2012-10-22 10:11:36
【问题描述】:

我需要在 MySQL 中执行一个查询,返回 product_id 的不同值,但我还需要选择并返回该特定表中的“id”字段。

此查询将返回不带 id 的不同 product_id:

SELECT DISTINCT product_id FROM orders_cart

此查询将在两个字段上使用 distinct,我想在 product_id 上使用它并查看 id

SELECT DISTINCT id, product_id FROM orders_cart

在 pgsql 上很容易做到,但我不知道如何在 mysql 上做到这一点。

【问题讨论】:

  • 这个怎么样? SELECT DISTINCT product_id,id FROM orders_cart
  • @MoyedAnsari 与 OPs sql 有何不同?我认为列顺序并不重要
  • 好吧,我实际上用 .distinct("field_name") 用于 pg sql django orm

标签: mysql distinct


【解决方案1】:

您的查询没有明确定义:考虑这个表

id   product_id
1     1
2     2
3     1
4     2

您的查询结果应该是什么?如果你的意思是

id        product_id
1 or 3     1
2 or 4     2

您正处于不确定性查询的领域。

你能做的是

SELECT MIN(id), product_id FROM orders_cart GROUP BY product_id

确定性地产生

id   product_id
1     1
2     2

【讨论】:

  • SELECT id, product_id FROM orders_cart GROUP BY product_id 是不确定的:您将获得其中一个 id,但没有严格定义哪个。 SELECT MIN(id), product_id FROM orders_cart GROUP BY product_id 是确定性的,它会给你最小的 id。
【解决方案2】:

这是我的最终代码: 这个问题最重要的部分是第 1,2 和 4 行:) GROUP BY 成功了 :)

SELECT orders_cart.id, product_id, order_id 
FROM orders_cart 
LEFT JOIN orders_order ON orders_cart.order_id=orders_order.id
WHERE orders_order.status='Wysłano'
GROUP BY orders_cart.product_id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-21
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多