Sql 有没有一种方法可以对级联where语句使用子查询?
我试图附加一些虚拟数据作为参考 我正试图从几十万个账户中提取一组特定的账号。该池由潜在客户和后续客户组成。潜在客户以5位数字开始,以3位零结束。以下帐户使用相同的5个数字,并更改最后三个。每个潜在客户通常有25-75个后续客户 我的目标是从一组潜在客户中提取所有后续客户。 我面临的问题是,以下帐户不包含我希望过滤掉的隐含标准。潜在客户有一个颜色代码,所有后续客户都在该颜色代码下。不幸的是,这只是给出了线索 以下是我到目前为止的情况: 选择 账号, 色码 从…起 主人,桌子 哪里 左帐号,5= 选择leftaccountnumber,5 从主人桌上 其中颜色代码为“绿色”、“洋红”、“青色”、“灰色”、“紫色”、“黄色”、“米色”Sql 有没有一种方法可以对级联where语句使用子查询?,sql,Sql,我试图附加一些虚拟数据作为参考 我正试图从几十万个账户中提取一组特定的账号。该池由潜在客户和后续客户组成。潜在客户以5位数字开始,以3位零结束。以下帐户使用相同的5个数字,并更改最后三个。每个潜在客户通常有25-75个后续客户 我的目标是从一组潜在客户中提取所有后续客户。 我面临的问题是,以下帐户不包含我希望过滤掉的隐含标准。潜在客户有一个颜色代码,所有后续客户都在该颜色代码下。不幸的是,这只是给出了线索 以下是我到目前为止的情况: 选择 账号, 色码 从…起 主人,桌子 哪里 左帐号,5= 选
您的代码基本上看起来是正确的。我会做一些小的修改:
Select t.AccountNumber, t.ColorCode
From Master.Table t
Where left(t.AccountNumber, 5) in (
Select left(t2.AccountNumber, 5)
From Master.Table t2
Where t2.ColorCode in ('Green', 'Magenta', 'Teal', 'Gray', 'Purple', 'Yellow', 'Beige') and
t2.AccountNumber like '%000'
);
注:
这将修复列名,使它们没有空格。
它使用IN而不是=。
这确保子查询中只考虑主帐户。
您也可以在不使用子查询的情况下使用联接来执行某些操作
CREATE TABLE #tempTable (
accountNumber NVARCHAR(20),
colorCode NVARCHAR(20)
)
INSERT INTO #tempTable (
accountNumber,
colorCode
)
VALUES ('12345000','Magenta'),('12346000','Beige'),('12347000','Black'),
('12345123',''),('12346321',''),('12346387',''),('12347988','')
SELECT b.accountNumber, a.colorCode
FROM #tempTable a
LEFT JOIN #tempTable b
ON LEFT(a.accountNumber, 5) = LEFT(b.accountNumber, 5)
AND a.colorCode IN (
'Green',
'Magenta',
'Teal',
'Gray',
'Purple',
'Yellow',
'Beige'
)
WHERE RIGHT(b.accountNumber, 3) <> '000'
DROP TABLE #tempTable
你应该把那个段落添加到你的文章中,而不是发布一个新的段落。建议仍然是一样的,你有id,所以留下来加入他们。现在已经定义了id的关联方式,连接条件是leftt1.id,5=leftt2.id,5和t1.id t2.id。请用您正在使用的数据库标记。你的问题是什么?
accountNumber colorCode
12345123 Magenta
12346321 Beige
12346387 Beige