【问题标题】:get only one value for customer_ID where multiple rows for where仅获取 customer_ID 的一个值 where 多行 where
【发布时间】:2020-07-01 16:33:27
【问题描述】:

您好,这是我的查询 - 如果我运行此查询,我会得到多个客户 ID,但我只想选择一个客户 ID

SELECT payments.customer_id,
       payments.reason,
       payments.date
FROM payments  
WHERE reason like '%error%' 
ORDER BY payments.date DESC

这是我尝试使用 group by 时收到的错误消息

Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'reason' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by (errno 1055) (sqlstate 42000)

【问题讨论】:

  • 您能否添加一些数据,并且您的查询不包含任何 Group By 子句,但是需要数据,以便我们可以看到您得到什么结果以及它来自哪里。
  • 这总是一个问题,所以你必须做一些工作并将其匿名化。
  • 我想我需要一个带有 customer_id 的组,但它一直抛出错误
  • 没有任何数据很难猜测,但按 customer_id 分组是一个好的开始,并尝试对 Group_:concat 等其余列进行聚合

标签: mysql group-by dbvisualizer mysql-error-1055


【解决方案1】:

下面你需要吗-

SELECT p.customer_id,
       p.reason,
       MAX(p.date) max_date
FROM payments p
WHERE p.reason like '%error%' 
GROUP BY p.customer_id,
         p.reason
ORDER BY max_date DESC

【讨论】:

    【解决方案2】:
    SELECT DISTINCT payments.customer_id, 
                    payments.reason,
                    payments.date FROM payments
    WHERE reason like '%error%' 
    ORDER BY payments.date DESC
    

    DISTINCT 会为你解决这个问题

    【讨论】:

    • 感谢 Arun 和 Badmous - 我已经尝试使用 distinct 但我仍然得到多个客户 ID。我认为这可能会发生,因为同一客户多次出现拒绝原因。我试图为一个 customer_id 得到一个错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    相关资源
    最近更新 更多