【问题标题】:How can I get the Unique ID and MAX(date)?如何获取唯一 ID 和 MAX(日期)?
【发布时间】:2015-07-12 14:13:20
【问题描述】:

有人可以帮帮我吗?我不知道我认为正确的查询有什么问题..

物品表

贷款表

当铺表

Loan_assignment 表

这是我获取唯一 ID 和 MAX(日期)的查询

SELECT distinct p.pawner_id, c.item_name, c.description, l.net_proceeds, 
max(DATE_FORMAT(a.date_loan_granted, '%d-%b-%Y')) as date 
from pawner p, loan l, collateral c, loan_assignment a, pawnshop b 
WHERE b.pawnshop_id = a.pawnshop_id AND p.pawner_id = a.pawner_id 
AND l.loan_id = a.loan_id AND a.item_id = c.item_id 
AND b.pawnshop_id = 1 group by p.pawner_id;

上述^查询的结果是这样的:

我喜欢发生的结果如下

【问题讨论】:

  • 首先修复您的查询,使其使用正确的显式join 语法。
  • 选择 p.pawner_id, c.item_id, c.description, l.net_proceeds, date_format(max(a.date_loan_granted), '%d-%b-%Y') as date_format from loan_assignment a在 p.pawner_id = a.pawner_id 上左加入当铺 p按loan_id分组)按p.pawner_id分组;
  • @GordonLinoff 的净额输出仍然是错误的,不知道为什么?..
  • 您的查询仍然存在问题:(1) 您在select 中有列不在group by 中。 (2) 您正在对字符串进行最大值操作,这与对日期进行最大值操作不同。进行查询以获得最大时间,然后将其重新加入。这可能是 Brian 的答案。

标签: mysql sql database-administration


【解决方案1】:

基于 cmets,如果您想要每个pawner_id 的最高 date_loan_granted 值,而不是您可能想要的每个 (pawner_id, item_id):

select m.pawner_id,
       i.item_name,
       i.description,
       l.net_amount,
       date_format(m.date_loan_granted, '%d-%b-%Y') as date_loan_granted
  from (select pawner_id,
               max(loan_id) as loan_id,
               max(date_loan_granted) as date_loan_granted
          from loan_assignment
         group by pawner_id) m
  join loan_assignment la
    on m.pawner_id = la.pawner_id
   and m.loan_id = la.loan_id
   and m.date_loan_granted = l.date_loan_granted
  join loan l
    on m.loan_id = l.loan_id
  join item i
    on la.item_id = i.item_id

【讨论】:

  • 我已经执行了您的查询,但它显示它有更多数据。我只想获取最大日期和最小净金额,并按pawner_id 对它们进行分组。感谢您的帮助
  • 上述查询应该为您实际发布的示例数据提供预期的输出。它显示了与为每个典当人和物品授予的最新贷款相关的信息。也许您想要每个典当者的最高日期,而不是每个(典当者,物品)组合。即使是这样,当你说“最少净额”时,我也不明白。最近日期的净额可能不是最小的净额。
【解决方案2】:

试试这个:

SELECT distinct p.pawner_id, c.item_name, c.description, l.net_proceeds, 
DATE_FORMAT(MAX(a.date_loan_granted), '%d-%b-%Y') as date 
from pawner p, loan l, collateral c, loan_assignment a, pawnshop b 
WHERE b.pawnshop_id = a.pawnshop_id AND p.pawner_id = a.pawner_id 
AND l.loan_id = a.loan_id AND a.item_id = c.item_id 
AND b.pawnshop_id = 1 group by p.pawner_id;

【讨论】:

  • 谢谢它的工作.. 我怎样才能得到更新的净额? ..我今天学到了一些东西..“max函数必须在date_format里面..”
猜你喜欢
  • 2015-03-01
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 2022-01-19
  • 2015-12-25
相关资源
最近更新 更多