MySQL:如何使用 LEFT JOIN 结果进行 INNER JOIN

标签 mysql left-join inner-join

我有一个表items,它是 map 上的点。他们在表item_stations(item_idstation_id)中列出了最近的地铁站。这些车站的名称放置在表stations中(idstation_namestation_direction,...)。

所以我需要在 SQL 查询项目数据中返回最近车站的名称。

SELECT 
    i.id, i.title, i.description,
    GROUP_CONCAT(s.station_id) as stations_ids,
FROM items i
    LEFT JOIN item_stations s ON s.item_id = s.id
WHERE id = ?
GROUP BY i.id
LIMIT 1

我必须如何编写INNER JOINWITH表stationsONstations.id = s.station_id

最佳答案

也许你想要这样的东西?

SELECT 
    i.id, i.title, i.description,
    GROUP_CONCAT(s.station_id) as stations_ids,
    GROUP_CONCAT(stations.station_name) as stations_names
FROM 
    items i
LEFT JOIN 
    item_stations s ON s.item_id = s.id
INNER JOIN stations on
    stations.id = s.station_id
WHERE i.id = ?
GROUP BY i.id, i.title, i.description
LIMIT 1

我将 i.id 放在 WHERE block 中,因为 id 字段位于 2 个表中 - item_stations 和 items。 MB 这是一个问题吗?

关于MySQL:如何使用 LEFT JOIN 结果进行 INNER JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591027/

相关文章:

mysql - 图片和标签 - 数据库设计问题

用于聊天表的 mysql 引擎(堆/内存与 innodb)

php - 带有 LIKE '% ? %' PHP 的 SQL 参数化查询

mysql - 为什么sql给出的结果不正确?

SQL连接三张表;表 1 的返回值,其中表 2 中的所有实例都具有相同的字段值

mysql - #1265 - 将列更改为 NOT NULL 时,第 2 行第 '' 列的数据被截断

mysql - 如何使用 MySql 根据时间间隔获取 id

连接两个表的前缀和非前缀字段的 SQL 查询

mysql - 内部连接到 3 个表但不显示任何内容

sql - INNER JOIN ON 与 WHERE 子句