提问人:anthony 提问时间:12/4/2019 更新时间:12/5/2019 访问量:876
用于比较表中两个值的简单内部联接
Simple Inner Join for comparing two values in table
问:
我目前被困在弄清楚什么可以被认为是一个相当基本和常见的内部连接问题:
我有两张桌子的订单和位置:
订单
|----------------------|-------------------|-------------------|
| foreign_from_id | foreign_to_id | same_triade |
|----------------------|-------------------|-------------------|
| US | MX | |
| US | DE | |
|----------------------|-------------------|-------------------|
地点
|----------------------|-------------------|
| foreign_id | triade |
|----------------------|-------------------|
| US | AME |
| MX | AME |
| DE | EU |
|----------------------|-------------------|
我的代码应该检查foreign_from_id和foreign_to_id是否在同一个三元组中,并在same_triade中返回 1 或 0。 帮助我弄清楚这个问题将帮助我解决很多 SQL 问题。
提前致谢!
答:
1赞
PeterHe
12/5/2019
#1
这应该有效:
SELECT o.foreign_from_id, o.foreign_to_id, CASE WHEN fl.triade=ol.triade THEN 1 ELSE 0 END AS same_triade
FROM orders o
INNER JOIN locations fl
ON o.foreign_from_id=fl.foreign_id
INNER JOIN locations tl
ON o.foreign_to_id=tl.foreign_id;
1赞
Alberto Moro
12/5/2019
#2
从@PeterHe的查询开始,我写了这样:
UPDATE orders
INNER JOIN locations fl ON orders.foreign_from_id=fl.foreign_id
INNER JOIN locations tl ON orders.foreign_to_id=tl.foreign_id
SET orders.same_triade = (CASE WHEN fl.triade=tl.triade THEN 1 ELSE 0 END)
上一个:连接两个表时的MySQL案例
下一个:MySQL 按位比较
评论