mysql - 来自 2 个表的数据

标签 mysql sql database

有两个表:

表格汽车

id | date
----------
1 | 2012-01-04
2 | 2012-01-04
3 | 2012-01-05

版本

id_car | year | author
-------------------------
1 | 2005 | John
1 | 2001 | Carl

2 | 2003 | Carl
2 | 2001 | John

3 | 2004 | Carl
3 | 2003 | John

如果作者是 Carl,我需要获取有关昨天 (2012-01-04) 汽车的所有信息以及有关其最新版本的信息。

所以在这个例子中我需要得到: <强>2 | 2012-01-04 | 2003 |卡尔

最佳答案

你想要一个内部联接:

select
    c.id,
    c.date,
    v.year,
    v.author
from
   cars c
   inner join versions v on
       c.id = v.id_car
   inner join (
        select 
            id_car, 
            max(year) as latestYear 
        from 
            versions 
        group by 
            id_car
    ) vmax on
       c.id = vmax.id_car
       and v.year = vmax.latestYear
where
   v.author = 'Carl'
   and c.date = '2012-01-04'

在此查询中,您是说,“从日期为 2012-01-04cars 中获取所有内容,然后在 versions 中查找所有内容 其中 id_car 列等于我在 cars 中的 id 列。哦,只给我 versions 的任何东西 作者是 Carl,但只有汽车年份等于可用汽车的最伟大年份。”

关于mysql - 来自 2 个表的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8745534/

相关文章:

android - 转换为 Dalvik 格式失败,错误 1

mysql - 创建查询以获取未完成调用的计数

database - Oracle 单值字段数据类型

mysql - SQL SELECT DISTINCT 不起作用

mysql - 使用MySQL获取大于0或小于0的总和

database - 乔姆拉! 3.2 - 从与其他选择的结果连接的表中选择

php - 将连接 MYSQL 的动态 PHP 站点转换为 CMS 的简便方法?

php - 从 mysql 表中获取 while() 循环金额的累计总额(通过加法)

mysql - ORDER BY addedOn DESC LIMIT in Mysql

java - MySQL选择从今年到去年特定月份的所有行