gpt4 book ai didi

mysql - 如何在具有两种不同条件的sqlite中连接表并获得一个结果行

转载 作者:行者123 更新时间:2023-11-28 23:34:59 24 4
gpt4 key购买 nike

我有带有位置的表“位置”...例如

location_id location_name
=========================
1 Location A
2 Location B
3 Location C

还有表“移动”,我记录了指定元素从位置 A 到位置 B 的移动情况:

id  item_id loc1_id loc2_id
===========================
1 1 1 3
2 2 2 1

我需要在一个结果行中移动指定的 item_id 和位置名称...

我试过示例,对于 item_id=1:

select `movements`.*,`locations`.`location_name` from `movements`
inner join `locations`
on (`locations`.`location_id`=`movements`.`loc1_id` or `locations`.`location_id`=`movements`.`loc2_id`)
where `movements`.`item_id`=1;

但是这样会返回 2 行:

id  item_id loc1_id loc2_id location_name
=========================================
1 1 1 3 Location A
1 1 1 3 Location C

有什么方法可以通过一个查询和一个结果行同时获得两个名称?我正在使用 SQLite,但我希望 MySQL 命令也能有所帮助。

最佳答案

我想这就是你想要的,( http://sqlfiddle.com/#!7/0d70a/1 )

SELECT 
b.id,b.item_id,b.loc1_id,b.loc2_id,l1.location_name location_name1,l2.location_name location_name2
FROM
movements b
INNER JOIN locations l1 ON l1.location_id=b.loc1_id
INNER JOIN locations l2 ON l2.location_id=b.loc2_id
WHERE
b.item_id=1

我在 SQLlite 和 MYSQL 上测试过

关于mysql - 如何在具有两种不同条件的sqlite中连接表并获得一个结果行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36039798/

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