【问题标题】:MySql - Join that delete duplicity in columnMySql - 加入删除列中的重复性
【发布时间】:2014-07-09 14:19:53
【问题描述】:

我是 MySql 的新手。我不知道函数的名称(如果存在),所以很难找到。 我有 2 张桌子。

软件 编号 |姓名 --------- 1 | xxxx 2 |年年 软件版本 编号 |软件ID |日期 ---------------------------------- 1 | 2 | 2013-10-9 10:20 2 | 1 | 2013-10-9 10:21 3 | 1 | 2013-10-9 10:22 4 | 2 | 2013-10-9 10:23

我正在寻找 SQL 命令,它可以连接这些表,按日期排序并只显示唯一记录。这些表看起来像:

编号 |姓名 |日期 -------------------------- 4 |年年 | 2013-10-9 10:23 3 | xxxx | 2013-10-9 10:22

我发现了一些关于 DISRINCT 的信息,但我认为它对此无法使用(我发现它会寻找整个记录的重复性)。也许与 GROUP 有关,但我真的不知道。我在 MySql 中所说的我只能做基本的选择、插入等。

即使我不知道每种类型的 JOIN,所以它可能是一些 INNER JOIN 或 LEFT JOIN。 JOIN 的类型很多,但我看不出有什么区别。

感谢您的每一个帮助!

【问题讨论】:

  • 请发布您的查询。
  • 在获取财富方面我是新手。有人能给我一笔财富让我开始吗?
  • 这个问题似乎是题外话,因为它似乎缺乏基本的研究水平,并且无法为 SO 的知识大炮添加任何内容。

标签: php mysql join


【解决方案1】:

您可以使用连接,对于每个软件的最新行,您可以在第二个表的最大值上使用自连接

select v.id,s.name,v.date from software s
join software_version v on (s.id=v.software_id)
join (select software_id ,max(date) date 
      from software_version group by software_id) v1
on(v.software_id =v1.software_id and v.date=v1.date)
order by v.date desc

Demo

【讨论】:

  • 哇,我在想这是一些更简单的方法,因为我找不到任何简单的解决方案。非常感谢,我会试试的。非常感谢。
猜你喜欢
  • 2023-04-02
  • 2015-03-09
  • 2015-05-25
  • 2020-08-20
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 2018-03-14
相关资源
最近更新 更多