我想加入两张桌子。
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
我如何构建此查询?
答案 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}}