mysql - 在嵌套 sql 命令中查找值

标签 mysql sql nested

我们需要根据不同列中的特定条件映射某些值,然后进一步需要在不同的表中进行查找以获取值 例如 表1

plant    country   v1      v2      v3      v4      v5      score
ny01       us      123     456     678    abc    def       good
ln01       uk      456     678     abc    def    def       better
ny03       us      def     1233    xxx    999    909       better
ln02       uk      788     4561    ab678  abc    def       good

表2

lookupcodes       globalhqno 
123                 usxx
456                 US001
abc                 UK001
1233                US022
abc678              UK033

所以总部的定义是
当国家 = 我们时,它是 v1
当国家/地区 = uk 时,它是 v3

以及 globalhqno 的定义。是 在表 2 中查找总部 1 的值并找到值

最终输出

plant    country   headquarters1      globalhqno 
ny01       us        456                 US001
ln01       uk        abc                 UK001
ny03       us        1233                US022
ln02       uk        4561                UK033

我从case语句开始,我能够让headhead1工作,但是我试图找到如何编写可能嵌套的sql或其他替代方案,以从case语句输出中获取headhead1的值,并在表2中查找值来填充globalhqno。

最佳答案

您需要根据您的规则派生一列,然后在联接中使用它。

select
*
from
(
Select
*,
case when country = 'US' then v1 -- or v2, your example isn't clear
when country = 'UK' then V3
end as join_column
from 
<table1>) t1
inner join <table2> t2
  on t1.join_column = t2.lookupcodes

关于mysql - 在嵌套 sql 命令中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56007575/

相关文章:

php - 使用 JOIN NULL 值匹配数据库中的列名

sql - PostgreSQL 删除等于以逗号分隔的字符串的行

json - Elasticsearch 的 "include_in_parent"/"include_in_root"是如何工作的?它应该显示在 '_source' 中吗?

python - 如何跳出只有一个嵌套循环

mysql - 使用嵌套查询对行进行排序(查询其他查询的结果)

Mysql,更新具有多条记录的列

mysql - 在排序语句中引用 "count"列的正确方法

在表值函数中使用#table/Temp 表的 SQL

sql - 恢复数据库失败?

angular - 在 Angular 上使用 lodash 过滤对象数组