Mysql 用于比较表中两个值的简单内部联接
我目前一直在想什么可以被认为是一个相当基本和常见的内部连接问题: 我有两张表,包括订单和位置: 订单Mysql 用于比较表中两个值的简单内部联接,mysql,join,comparison,Mysql,Join,Comparison,我目前一直在想什么可以被认为是一个相当基本和常见的内部连接问题: 我有两张表,包括订单和位置: 订单 |----------------------|-------------------|-------------------| | foreign_from_id | foreign_to_id | same_triade | |----------------------|-------------------|-------------------| |
|----------------------|-------------------|-------------------|
| 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 |
|----------------------|-------------------|-------------------|
| US | MX | |
| US | DE | |
|----------------------|-------------------|-------------------|
|----------------------|-------------------|
| foreign_id | triade |
|----------------------|-------------------|
| US | AME |
| MX | AME |
| DE | EU |
|----------------------|-------------------|
我的代码应该检查外部\u from\u id和外部\u to\u id是否在同一个空间坐标系中,并在同一个空间坐标系中返回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)
请看:我自己也曾试图解决这个问题,但我正在努力。我认为对于有mysql经验的人来说,这是一件很简单的事情……我想你是对的。