我有一个平面文件,其中包含一个手机号码列表及其活动或非活动状态。所以我的工作是编写一个 SQL 查询,这样我需要为特定的 msisdn 获取 7 个表的列表,我必须得到msisdn 的状态。所以任何建议如何写。
我不能使用连接。
我有一个平面文件,其中包含一个手机号码列表及其活动或非活动状态。所以我的工作是编写一个 SQL 查询,这样我需要为特定的 msisdn 获取 7 个表的列表,我必须得到msisdn 的状态。所以任何建议如何写。
我不能使用连接。
第 1 步:执行BULK INSERT 以加载文本文件
第 2 步:从特定表的所有表中获取记录msisdn
第 3 步:在第 1 步和第 2 步之间加入特定的msisdn
伪代码
CREATE TABLE TempTable
(
MSISDN INT,
MobileNumber VARCHAR (50) NOT NULL,
TheStatus varchar (10) NOT NULL
)
--Step 1:
BULK INSERT TempTable FROM 'D:\InputMobileNumbers.txt' WITH (FIELDTERMINATOR = '","')
-- Step 2:
INSERT INTO #TEMP
SELECT * FROM
(
SELECT MSISDN,MobileNumber FROM Table1 WHERE MSISDN = @MSISDN UNION All
SELECT MSISDN,MobileNumber FROM Table2 WHERE MSISDN = @MSISDN UNION All
.............................................................................
.............................................................................
SELECT MSISDN,MobileNumber FROM Table7 WHERE MSISDN = @MSISDN UNION All
)X
-- Step 3
SELECT tt.MSISDN,tt.MobileNumber,tt.TheStatus
FROM TempTable tt
JOIN #TEMP t ON tt.MSISDN = t.MSISDN
WHERE tt.MSISDN = @MSISDN
DROP TABLE #TEMP
DROP TABLE TempTable
也许你会使用UNION
这个。
SELECT *
FROM
(
SELECT mobileNo, moileStatus FROM table1
UNION
SELECT mobileNo, moileStatus FROM table2
UNION
SELECT mobileNo, moileStatus FROM table3
UNION
SELECT mobileNo, moileStatus FROM table4
UNION
SELECT mobileNo, moileStatus FROM table5
UNION
SELECT mobileNo, moileStatus FROM table6
UNION
SELECT mobileNo, moileStatus FROM table7
) allMobile
WHERE allMobile.mobileNo = ''
-- OR something like that
select t1.column1,t1.column2,...,t2.column4,..
from table1 t1
left outer join table2 t2 on t1.column1=t2.column3
left outer join table2 t3 on t2.column1=t3.column2
.....
where t1.active=1 and t2.column2>0 ....
order by t1.column1,.....