我们需要根据不同列中的特定条件映射某些值,然后进一步需要在不同的表中进行查找以获取值 例如 表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/