MySQL的选择1行从内部联接(MySQL select 1 row from inner join

2019-10-16 19:51发布

我不知道这个问题的条款,标题可能是有点误导。

我试图创建一个1到许多表概述,但只希望选择的关系表1倍的例子。

为表

name
id

汽车颜色

car_id
color

一辆车可以有许多不同的颜色。 不过,我要选择“概览”只是一种颜色。 我怎样才能做到这一点? 我尝试导致了很多与同车排的多种颜色的结果。

优选地,在一个查询,如果可能的。

提前致谢

编辑:

我想我的问题是模糊的。 我想选择汽车表内的所有汽车,但只有1个颜色(它后面的第一个)。

Foo     blue
Bar     blue
Barfoo  yellow

等等

然而富有颜色,蓝色,黄色,红色,黑色等。

至于表中创建查询,这是一个“虚拟”的版本。 我只是想学习如何使用推到正确的方向解决这个问题。

Answer 1:

你需要这样的查询:

SELECT * FROM car
INNER JOIN car_color ON car.id = car_color.car_id 
LIMIT 1 -- this will limit the results to only one row

编辑:让只用一种颜色的车,你可以使用组:

SELECT * FROM car
INNER JOIN car_color ON car.id = car_color.car_id 
GROUP BY car.id -- this will group all the rows with the same car to only one row per car


Answer 2:

How about this.

    CREATE table car(name varchar(10),id int primary key);
    CREATE table car_details(car_id int foreign key references car(id), color varchar(20));

    INSERT into car values('BMW',1);
    INSERT into car_details values(1,'Blue');

    INSERT into car values('toyota',2);
    INSERT into car_details values(2,'pink');

    SELECT * FROM
    car c INNER join car_details cd
    on c.id = cd.car_id
    limit 1;

    Results in.    

    name       id          car_id      color
---------- ----------- ----------- --------------------
    BMW        1           1           Blue


Answer 3:

SUBQUERY

select cc.color from CarColours cc,Car c where cc.car_id = c.id and c.id = 1 limit 1 


文章来源: MySQL select 1 row from inner join