MySQL:加入两个表,但只得到第二个表中的第一个值

时间:2015-07-23 01:07:10

标签: mysql sql

我想加入两张桌子。

car_make表:

id   |    name   |   color  
---------------------------
12   |   Tayota  |   red
13   |   Ford    |   gray
15   |   Tesla   |   red
17   |   GM      |   blue

car_type table:

id   |    car_id   |   image_one      |   image_two       |  image_three  
--------------------------------------------------------------------------
1    |   12        |   tayota1.jpg    |   tayota2.jpg     |  tayota3.jpg
2    |   17        |   gm1.jpg        |   gm2.jpg         |  gm3.jpg
3    |   12        |   tayota3.jpg    |   tayota4.jpg     |  tayota5.jpg
4    |   13        |   ford1.png      |   ford2.png       |  ford3.png
5    |   13        |   ford4.png      |   ford5.png       |  ford6.png

我想抓住并显示car_make中的每一行,并加入每个make的第一个image_one实例。

例如,我希望输出:

Row 1: Tayota, red, tayota1.jpg
Row 2: Ford, gray, ford1.jpg
Row 3: Tesla, red, NULL
Row 4: GM, blue, gm1.jpg

我如何构建此查询?

2 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。这是一个使用子查询来确保您只选择每辆车的第一种车型

select * from car_make cm
left join car_type ct on ct.car_id = cm.id
and ct.id = (select min(id) from car_type ct2 where ct2.car_id = ct.car_id)

答案 1 :(得分:1)

因为您希望等效于{{1}}且只想要一行,所以最简单的方法可能是相关的子查询:

{{1}}