SQL 右连接功能条件
SQL right join with functional condition
我有这样的加入:
"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: 'Subquery returned more than 1
value. This is not permitted when the subquery follows =, !=, <, <= ,
, >= or when the subquery is used as an expression.'
如何强制子查询每行只获取 1 个数据?
我想你的查询会像下面这样
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 的 select,这没有任何意义
看来您确实把自己弄糊涂了...您不需要子选择 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
我有这样的加入:
"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: 'Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= ,
, >= or when the subquery is used as an expression.'
如何强制子查询每行只获取 1 个数据?
我想你的查询会像下面这样
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 的 select,这没有任何意义
看来您确实把自己弄糊涂了...您不需要子选择 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