gpt4 book ai didi

MySQL:来自另一张表的一行中的多个ID

转载 作者:行者123 更新时间:2023-11-29 00:13:33 25 4
gpt4 key购买 nike

这可能有点令人费解,但我会试一试。

我有一个包含事件数据的表:

| id | event | from_location | to_location |
| 1 | move | 12 | 14 |
| 2 | move | 13 | 15 |

并且从位置和到位置是在另一个 able 中引用的 id

| id | name    |
| 12 | london |
| 13 | paris |
| 14 | newyork |
| 15 | tokyo |

我的问题是我需要根据位置搜索第一个表,但在第二个表中使用名称,我想通过一次查询尽可能简单地完成。

如果它是一列,我可以只做一个连接并获得可用的名称,但因为它是两列,所以这是行不通的。

我可以在第一个表中搜索名称,然后使用 ID 搜索另一个表 - 但我想在一个查询中完成。

所以我的问题是 - 有没有一种方法可以简单地将 ID 替换为相应的名称 - 然后进行搜索,所有这些都在一个查询中?

我还要说一件事 - 我没有设置它。如果我有,我会完全放弃使用 id,而只是使用名称作为键。但现在它就是这样 - 让我们假设我无法改变它。

谢谢

最佳答案

如果你想检查从或到位置是否是一个特定的位置:-

SELECT event_data.id, event_data.event, event_data.from_location, event_data.to_location 
FROM event_data
INNER JOIN locations l1 ON event_data.from_location = l1.id
INNER JOIN locations l2 ON event_data.to_location = l2.id
WHERE l1.name = 'somewhere'
OR l2.name = 'somewhere'

如果你想要一个特定的起点位置和另一个特定的终点位置

SELECT event_data.id, event_data.event, event_data.from_location, event_data.to_location 
FROM event_data
INNER JOIN locations l1 ON event_data.from_location = l1.id
INNER JOIN locations l2 ON event_data.to_location = l2.id
WHERE l1.name = 'somewhere'
AND l2.name = 'somewhereelse'

关于MySQL:来自另一张表的一行中的多个ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23787707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com