mysql - 用于比较表中两个值的简单内连接
问题描述
我目前正忙于弄清楚什么可以被认为是一个相当基本和常见的内部连接问题:
我有两个表订单和位置:
订单
|----------------------|-------------------|-------------------|
| 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 是否在同一个triade 中,并在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;
推荐阅读
- javascript - 如何显示视频块...在本地主机中
- jenkins - 使用脚本设置 Jenkins“全局工具配置”属性
- tensorflow - 使用 tensorflow 的对象检测 api 时,命令行中的“--logtostderr”是什么意思?
- visual-studio - VS2017中的DevEnvDir指向VS2015
- authentication - 通用登录网站重定向到单独的网站
- jpa - 如何将 @ConstructorResult 与 Set 一起使用
场地 - sql - 将日期转换为 varchar 然后比较
- sharepoint - 余数的共享点工作流
- excel - 如何从单元格中获取工作表名称而不是直接使用工作表名称?
- javascript - v8 Atomics.wait timeout 为什么错误这么大?