SQL - 连接语句的例外
Posted
技术标签:
【中文标题】SQL - 连接语句的例外【英文标题】:SQL - EXCEPTION TO A JOIN STATEMENT 【发布时间】:2015-02-20 15:34:56 【问题描述】:我想加入两张桌子。一个具有货币参考,另一个具有货币参考的名称。这就像一个常规的内部连接练习,但有一个例外。第一个表中0的货币参考实际上是另一个表中的160。如何操纵我的 join 语句来解决这个问题?
表 1
CREDIT TYPE TRCURR CAR LOAN 0 CONSUMER LOAN 0 CAR LOAN 20 CAR LOAN 1
表 2
CURRENCYREF NAME_ 1 EUR 20 YEN 160 USD
请注意,所有TRCURR
- CURRENCYREF
组合都是正确的,但表 1 中的货币 160
是 0
。
谢谢!
【问题讨论】:
这是 mysql 还是 sql-server?你们都标记了 它是 SQL 服务器,但我选择了两者,因为这是一个基本的 SQL 问题。感谢您的回复! 【参考方案1】:您可以在连接语句中使用多个条件,例如:
SELECT *
FROM table1 t1
inner join table2 t2 on t1.trCurr = t2.currencyRef
or (t1.trCurr = 0 AND t2.currencyRef = 160)
【讨论】:
【参考方案2】:您可以使用 CASE,例如,先使用 INNER JOIN 语句 所以,它就像:
select * from (
select case when tabl.TRCURR = 0 then '160',
when tabl.TRCURR = 1 the '...' end as TRCURR, tabl.*
from table_1 tabl) t1
inner join table_2 t2
on t1.TRCURR = t2.CURRENCYREF
类似的东西
【讨论】:
【参考方案3】:我不知道我是否正确理解了您的要求,但根据我的理解,您可以尝试以下查询以了解您的异常情况,因为它将克服不匹配的 0 = 160 障碍。
SELECT *
FROM TABLE1 t1
INNER JOIN TABLE1 t2 ON t1.TRCURR = t2.CURRENCYREF OR (t1.TRCURR = 0 AND t2.CURRENCYREF = 160)
谢谢
【讨论】:
以上是关于SQL - 连接语句的例外的主要内容,如果未能解决你的问题,请参考以下文章