MySQL从内连接中选择1行

时间:2012-06-06 12:17:54

标签: mysql select row limit

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

我正在尝试创建1到多个表的概述,但只想选择关系表的1个示例。

车牌

name
id

汽车颜色

car_id
color

汽车可以有许多不同的颜色。但是我想为“概述”选择一种颜色。我怎样才能做到这一点?我尝试使用同一车排的多种颜色产生大量结果。

如果可能,最好在一个查询中。

提前致谢

修改

我认为我的问题是模糊不清。我正在尝试选择汽车餐桌内的所有汽车,但只选择1种颜色(第一种颜色)。

Foo     blue
Bar     blue
Barfoo  yellow

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

对于表创建查询,这是一个“虚拟”版本。我只是想学习如何通过向正确的方向解决这个问题。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

SUBQUERY

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