【问题标题】:MySQL select 1 row from inner joinMySQL 从内部连接中选择 1 行
【发布时间】:2012-06-10 11:03:31
【问题描述】:

我不知道这个问题的术语,标题可能有点误导。

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

汽车桌

name
id

汽车颜色

car_id
color

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

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

提前致谢

编辑:

我认为我的问题含糊不清。我正在尝试选择汽车表中的所有汽车,但只有一种颜色(它遇到的第一种颜色)。

Foo     blue
Bar     blue
Barfoo  yellow

不过 Foo 有蓝色、黄色、红色、黑色等颜色。

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

【问题讨论】:

  • 您可以发布您尝试过的内容吗?
  • 向我们展示您的尝试,也请发布 SHOW CREATE TABLE 的输出

标签: mysql select row limit


【解决方案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

【讨论】:

    【解决方案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
    

    【讨论】:

      【解决方案3】:

      子查询

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

      【讨论】:

      • 抱歉不是子查询,是连接查询
      猜你喜欢
      • 1970-01-01
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 2012-09-09
      相关资源
      最近更新 更多