SELECT UserID FROM UserTable a,(SELECT ClientIp FROM LoginTable WHERE USERID=1234) b WHERE a.ClientIp =b.ClientIp UNION ALL SELECT UserID FROM UserTable1 a (SELECT ClientIp FROM LoginTable WHERE USERID=1234) b WHERE a.ClientIp =b.ClientIp UNION ALL SELECT UserID FROM UserTable2 a (SELECT ClientIp FROM LoginTable WHERE USERID=1234) b WHERE a.ClientIp =b.ClientIp UNION ALL SELECT UserID FROM UserTable3 a (SELECT ClientIp FROM LoginTable WHERE USERID=1234) b WHERE a.ClientIp =b.ClientIp UNION ALL SELECT UserID FROM UserTable4 a (SELECT ClientIp FROM LoginTable WHERE USERID=1234) b WHERE a.ClientIp =b.ClientIp
嗯..不好意思,为了简洁,我只是写了个大概DECLARE @ClientIp VARCHAR(max) SELECT @ClientIp =@ClientIp + QUOTENAME(ClientIp,'''')+'',''FROM LoginTable WHERE USERID=1234 SELECT @ClientIp='('+SUBSTRING(@ClientIp,1,LEN(@ClientIp)-1)+')'--把所有的IP地址都拼接成一个字符串,然后动态执行SQL DECLARE @SQL NVARCHAR(MAX)SELECT @SQL= 'SELECT UserID FROM UserTable WHERE ClientIp in ' +@ClientIp + 'UNION ALL ' 'SELECT UserID FROM UserTable1 WHERE ClientIp in '+ @ClientIp + 'UNION ALL ' 'SELECT UserID FROM UserTable2 WHERE ClientIp in '+ @ClientIp + 'UNION ALL ' 'SELECT UserID FROM UserTable3 WHERE ClientIp in ' + @ClientIp+ 'UNION ALL ' 'SELECT UserID FROM UserTable4 WHERE ClientIp in '+ @ClientIp
谢谢.. 如果SELECT ClientIp FROM LoginTable WHERE USERID=1234查出来的结果放到一个临时表里, 然后按下面的代码会不会好点?? SELECT UserID FROM UserTable WHERE ClientIp in (SELECT ClientIp FROM 临时表) UNION ALL SELECT UserID FROM UserTable1 WHERE ClientIp in (SELECT ClientIp FROM 临时表)
这样能行吗?
UNION ALL
SELECT UserID FROM UserTable1 a (SELECT ClientIp FROM LoginTable WHERE USERID=1234) b WHERE a.ClientIp =b.ClientIp
UNION ALL
SELECT UserID FROM UserTable2 a (SELECT ClientIp FROM LoginTable WHERE USERID=1234) b WHERE a.ClientIp =b.ClientIp
UNION ALL
SELECT UserID FROM UserTable3 a (SELECT ClientIp FROM LoginTable WHERE USERID=1234) b WHERE a.ClientIp =b.ClientIp
UNION ALL
SELECT UserID FROM UserTable4 a (SELECT ClientIp FROM LoginTable WHERE USERID=1234) b WHERE a.ClientIp =b.ClientIp
SELECT @ClientIp =@ClientIp + QUOTENAME(ClientIp,'''')+'',''FROM LoginTable WHERE USERID=1234
SELECT @ClientIp='('+SUBSTRING(@ClientIp,1,LEN(@ClientIp)-1)+')'--把所有的IP地址都拼接成一个字符串,然后动态执行SQL
DECLARE @SQL NVARCHAR(MAX)SELECT @SQL=
'SELECT UserID FROM UserTable WHERE ClientIp in ' +@ClientIp +
'UNION ALL '
'SELECT UserID FROM UserTable1 WHERE ClientIp in '+ @ClientIp +
'UNION ALL '
'SELECT UserID FROM UserTable2 WHERE ClientIp in '+ @ClientIp +
'UNION ALL '
'SELECT UserID FROM UserTable3 WHERE ClientIp in ' + @ClientIp+
'UNION ALL '
'SELECT UserID FROM UserTable4 WHERE ClientIp in '+ @ClientIp
谢谢.. 如果SELECT ClientIp FROM LoginTable WHERE USERID=1234查出来的结果放到一个临时表里,
然后按下面的代码会不会好点??
SELECT UserID FROM UserTable WHERE ClientIp in (SELECT ClientIp FROM 临时表)
UNION ALL
SELECT UserID FROM UserTable1 WHERE ClientIp in (SELECT ClientIp FROM 临时表)
SELECT UserID FROM UserTable , 临时表 WHERE UserTable.ClientIp=临时表.ClientIp