Mysql 如何在左联接中使用IF(LEN)

Mysql 如何在左联接中使用IF(LEN),mysql,Mysql,我正在尝试基于带有多个条件和LEN的IF语句创建联接,但无法使其工作 SELECT "Datafeed-WO"."Billing Cd" AS 'Billing Type', IF(LEN("Datafeed-WO"."Zip") = 6, 'CDA', 'USA') AS 'Country', "BudgetTbl"."BudYr" AS 'Budget Yr', "BudgetTbl"."Budget" AS 'Group Budget'

我正在尝试基于带有多个条件和LEN的IF语句创建联接,但无法使其工作

SELECT
    "Datafeed-WO"."Billing Cd" AS 'Billing Type',        
    IF(LEN("Datafeed-WO"."Zip")  = 6, 'CDA', 'USA') AS 'Country',
    "BudgetTbl"."BudYr" AS 'Budget Yr',
    "BudgetTbl"."Budget" AS 'Group Budget'

FROM "Datafeed-WO"

LEFT JOIN "BudgetTbl" 
   ON ( IF(LEN("Datafeed-WO"."Zip")  = 6, 'CDA', 'USA') = "BudgetTbl"."Country")  
      AND  ("Datafeed-WO"."Billing Cd"  = "BudgetTbl"."Billing Cd")

感谢您为解决此问题提供的帮助!

您需要将所有引号('and')更改为倒勾(`),然后再次尝试执行。 从今以后,表名和列名中不要包含空格也很重要

希望这就是你想要的:

select
    dw.`Billing Cd` as `Billing_Type`,       
    if(len(dw.`Zip`)  = 6, 'CDA', 'USA') as `Country`,
    bt.`BudYr` as `Budget_Yr`,
    bt.`Budget` as `Group_Budget`
from `Datafeed-WO` dw
left join `BudgetTbl` bt on (dw.`Billing Cd` = bt.`Billing Cd`) and ((len(dw.`Zip`) = 6 && bt.`Country` = 'CDA') || (len(dw.`Zip`) != 6 && bt.`Country` = 'USA'));

您需要将所有的引号('and')更改为倒勾(`),然后再次尝试执行它。 从今以后,表名和列名中不要包含空格也很重要

希望这就是你想要的:

select
    dw.`Billing Cd` as `Billing_Type`,       
    if(len(dw.`Zip`)  = 6, 'CDA', 'USA') as `Country`,
    bt.`BudYr` as `Budget_Yr`,
    bt.`Budget` as `Group_Budget`
from `Datafeed-WO` dw
left join `BudgetTbl` bt on (dw.`Billing Cd` = bt.`Billing Cd`) and ((len(dw.`Zip`) = 6 && bt.`Country` = 'CDA') || (len(dw.`Zip`) != 6 && bt.`Country` = 'USA'));

那么到底是什么问题呢?
左键连接“BudgetTbl”(如果(LEN(“Datafeed WO”,“Zip”)=6,“CDA”,“USA”)=“BudgetTbl”,“Country”)
这看起来不太好。你想实现什么?首先更改双引号
到backticks
`
包围的表名和列名,如
`Datafeed WO`.`Billing Cd`
那么到底是什么问题?
左键连接“BudgetTbl”打开(如果(LEN(“Datafeed WO.”Zip)=6,'CDA',USA')=“BudgetTbl.”Country)
这看起来不太好。你想实现什么?首先将双引号
改为反勾号
`
包围的表名和列名,如
`Datafeed WO`.`Billing Cd`