【问题标题】:SQL Select all columns from one table and Max value of another column on another tableSQL从一个表中选择所有列并在另一个表中选择另一列的最大值
【发布时间】:2017-11-13 19:49:15
【问题描述】:

这是我在 stackoverflow 中的第一个问题,我希望我能尽快得到我的问题的答案。 :) 我尝试从其他来源搜索相当长的时间,但不幸的是,找不到有效的答案。

所以,我正在做一个项目,因为我是 sql 的新手,所以我不能这样做:

我有 2 张桌子:

“客户”列“id”、“name”、“last name”(“id”是主键)
带有“id”、“Customer”、“entrydate”列的“Sessions”(“id”是主键)

“Sessions”中的“Customer”与“Customers”中的“id”相关联。 (外键)

我需要一个查询,它返回表“客户”中的所有列,另外一列显示每个客户的最新“会话”记录的输入日期。正如您可以想象的那样,“Sessions”表可能有许多记录用于单个“Customers”记录。

提前感谢大家,希望尽快得到答复。

【问题讨论】:

  • 您使用的是哪个DBMS?后格雷斯?甲骨文?

标签: sql select greatest-n-per-group


【解决方案1】:

我可能遗漏了一些非常明显的东西,但这听起来非常基本的 sql,就像你在 sql 教程中找到的那种 https://www.w3schools.com/SQL/sql_groupby.asp

SELECT C.name,c.lastName,MAX(S.entryDate) FROM customers C
inner join Sessions S ON S.CustomerId=C.Id
group by C.name,C.lastName

【讨论】:

  • 马克,你什么都没有错过... :) 我们都是从某个地方开始的,对吧?说实话,在使用子查询进行一些研究后,我设法让它工作,但你的方法似乎更容易。在我在这里列出问题之前,我实际上尝试了你的方法,但是我的语法错误并且我收到了一个错误......请继续关注,因为我将来可能会再次需要你的帮助,希望用于更复杂的查询。 :) 再次感谢。
  • 对不起@JohnKastana 我不是有意遇到这样的情况,但也许你会从一些教程中受益,也许像一个简单的购物车/客户、订单、交付教程会有很大帮助。在使用 SQL 时,我能给你的最好建议不是考虑单个项目,而是考虑集合论。值得谷歌。
【解决方案2】:

就这么简单。

SELECT C.id,C.name,c.lastName,MAX(S.entryDate) as lastEntry FROM customers C join Sessions S ON S.CustomerId=C.Id group by C.id

【讨论】:

    猜你喜欢
    • 2021-12-30
    • 2011-03-30
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    相关资源
    最近更新 更多