通过SQL获取所有者及其里程

时间:2018-01-12 13:03:39

标签: mysql sql

所以我有两个使用MySql的表; OwnersCars,其中所有者拥有生日,汽车有里程记录。表格看起来像这样:

Owners:
+-------+--------------+
| Field | Type         |
+-------+--------------+
| id    | varchar(10)  |
| birth | datetime     |
| name  | varchar(100) |
+-------+--------------+

Cars:
+--------------+-------------+
| Field        | Type        |
+--------------+-------------+
| plate        | varchar(6)  |
| mileage      | int(11)     |
| owner*       | varchar(10) | //fk references Owners
+--------------+-------------+

我希望能够使用SQL选择最年轻的所有者和他们的里程数。我设法让车主成为最年轻的车,但我不知道如何加入表格并创建一个包含车主属性和里程属性的表格。

SELECT * 
FROM Cars 
WHERE owner = (SELECT id 
               FROM Owners 
               WHERE birth = (SELECT MAX(birth) FROM Owners));

我所说的归还汽车,例如。

+--------+---------+------------+
| plate  | mileage | owner      |
+--------+---------+------------+
| KFO405 |    8109 | 9912218527 |
+--------+---------+------------+

但我想这样:

+------------+---------------------+-----------------------+------------+
| id         | birth               | name                  | milage     |
+------------+---------------------+-----------------------+------------+
| 9912218527 | 1999-12-21 00:00:00 | Marva Rocha           |       8109 |
+------------+---------------------+-----------------------+------------+

感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

获得最年轻的老板和里程

  SELECT A.ID, A.BIRTH, A.NAME, B.MILAGE
  FROM Owners A
      INNER JOIN Cars B
      ON A.ID=B.owner
  ORDER BY A.birth ASC LIMIT 1;

答案 1 :(得分:1)

您基本上首先加入表格,然后定义标准(出生):

SELECT Owners.name,
       Owners.birth,
       Cars.plate,
       Cars.milage
FROM Owners
JOIN Cars ON Cars.owner = Owners.id
WHERE Owners.birth =
        (SELECT MAX(birth)
         FROM Owners)