【问题标题】:How to SELECT 2 tbls but only 1 row from second tbl with lowest PK in MySQL?如何从 MySQL 中 PK 最低的第二个 tbl 中选择 2 个 tbl 但只有 1 行?
【发布时间】:2013-09-03 08:41:11
【问题描述】:

结构:

第 1 章

|car_id(PK)| make  | model | year |
-----------------------------------
|     1    | Toyot | Camry | 1999 |
|     2    | Honda | Civic | 2005 |

第 2 章

|img_id(PK)| car_id|   img_link    |
------------------------------------
|     1    |    1  |  tcamry1.jpeg |
|     2    |    1  |  tcamry2.jpeg |
|     3    |    1  |  tcamry3.jpeg |
|     4    |    2  |  hcivic1.jpeg |
|     5    |    2  |  hcivic2.jpeg |

我的查询:

SELECT *
FROM cars c
LEFT JOIN imgs g
ON c.car_id=g.car_id
WHERE 1

结果:

|img_id(PK)| car_id| make  | model | year |   img_link    |
-----------------------------------------------------------
|     1    |    1  | Toyot | Camry | 1999 |  tcamry1.jpeg |
|     2    |    1  | Toyot | Camry | 1999 |  tcamry2.jpeg |
|     3    |    1  | Toyot | Camry | 1999 |  tcamry3.jpeg |
|     4    |    2  | Honda | Civic | 2005 |  hcivic1.jpeg |
|     5    |    2  | Honda | Civic | 2005 |  hcivic2.jpeg |

我需要为每辆车获取 1 行,并在 WHERE 子句中设置与同一辆车相关的所有 img_id 中最低的 img_id 值。

我想要的结果:

|img_id(PK)| car_id| make  | model | year |   img_link    |
-----------------------------------------------------------
|     1    |    1  | Toyot | Camry | 1999 |  tcamry1.jpeg |
|     4    |    2  | Honda | Civic | 2005 |  hcivic1.jpeg |

谢谢。

更新:

我需要一些类似的东西:-/

SELECT g.id, c.car_id, c.mc_make, c.mc_model, c.mc_year, c.mc_desc
FROM mycars c
INNER JOIN (SELECT * FROM mycars_gallery g WHERE )
ON c.car_id=g.car_id
WHERE g.id = min(g.id)

【问题讨论】:

  • 我觉得我需要查看 min() 函数,请参阅上面的更新。我只是不知道正确的语法

标签: mysql groupwise-maximum


【解决方案1】:

试试:

SELECT MIN(b.img_id), a.car_id, a.make, a.model, a.year, b.img_link 
FROM cars a 
LEFT JOIN imgs b ON a.car_id = b.car_id 
GROUP BY a.car_id, a.make, a.model, a.year ;

演示:http://sqlfiddle.com/#!2/1469f/15 希望这会有所帮助。

【讨论】:

    【解决方案2】:
    SELECT *
    FROM cars c
    LEFT JOIN imgs g
    ON c.car_id=g.car_id
    WHERE img_id IN(SELECT MIN(img_id)) GROUP BY model
    

    【讨论】:

      【解决方案3】:
      SELECT *
      FROM cars c
      LEFT JOIN imgs g
      ON c.car_id=g.car_id
      WHERE 1
      GROUP BY g.img_link;
      

      试试这个..虽然不确定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-13
        • 1970-01-01
        • 1970-01-01
        • 2011-08-19
        相关资源
        最近更新 更多