代码之家  ›  专栏  ›  技术社区  ›  David

带函数条件的SQL右连接

  •  0
  • David  · 技术社区  · 7 年前

    我有这样的想法:

                 "SELECT ADB.column1, BDB.column2 FROM ADB RIGHT JOIN BDB ON  
            (SELECT SUBSTRING( ADB.column1, LEN(ADB.column1) - 
         CHARINDEX('|',REVERSE(ADB.column1)) + 2  ,
     LEN(ADB.column1)  ) FROM BDB) = BDB.column2", sqlCon);
    

    当我运行这个代码时,我得到一个错误

    System.Data.SqlClient.SqlException:'子查询返回的值超过1 价值观。当子查询跟在=,!=<<=,

    如何强制子查询每行仅获取1个数据?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Zaynul Abadin Tuhin    7 年前

    我想你会这样问

    SELECT ADB.column1,
             BDB.column2 FROM
            ADB RIGHT JOIN BDB ON  
                ( SUBSTRING( ADB.column1, LEN(ADB.column1) - 
             CHARINDEX('|',REVERSE(ADB.column1)) + 2  ,
         LEN(ADB.column1) ) 
           ) = BDB.column2
    

    您正在加入ADB和BDB,但使用的连接条件是从BDB中选择,这没有任何意义

        2
  •  0
  •   Alex    7 年前

    FROM BDB 既然你有这些 ADB.column1 转变。

    SELECT ADB.column1, BDB.column2 
    FROM ADB 
    RIGHT JOIN BDB 
    ON  SUBSTRING(ADB.column1, LEN(ADB.column1) - 
           CHARINDEX('|',REVERSE(ADB.column1)) + 2  ,
           LEN(ADB.column1)
        ) = BDB.column2