用于比较 table 中两个值的简单内部联接

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 是否在同一个三元组中,以及 return 在 same_triade 中是否为 1 或 0。 帮我解决这个问题会帮助我解决很多 SQL 问题。

提前致谢!

这应该有效:

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;

从@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)

DEMO