【问题标题】:SQL - EXCEPTION TO A JOIN STATEMENTSQL - 连接语句的例外
【发布时间】: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 中的货币 1600

谢谢!

【问题讨论】:

  • 这是 mysql 还是 sql-server?你们都标记了
  • 它是 SQL 服务器,但我选择了两者,因为这是一个基本的 SQL 问题。感谢您的回复!

标签: mysql sql-server join


【解决方案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)
      

      谢谢

      【讨论】:

        猜你喜欢
        • 2012-07-10
        • 2010-12-20
        • 2011-03-16
        • 1970-01-01
        • 2016-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多