Sql 有没有一种方法可以对级联where语句使用子查询?

Sql 有没有一种方法可以对级联where语句使用子查询?,sql,Sql,我试图附加一些虚拟数据作为参考 我正试图从几十万个账户中提取一组特定的账号。该池由潜在客户和后续客户组成。潜在客户以5位数字开始,以3位零结束。以下帐户使用相同的5个数字,并更改最后三个。每个潜在客户通常有25-75个后续客户 我的目标是从一组潜在客户中提取所有后续客户。 我面临的问题是,以下帐户不包含我希望过滤掉的隐含标准。潜在客户有一个颜色代码,所有后续客户都在该颜色代码下。不幸的是,这只是给出了线索 以下是我到目前为止的情况: 选择 账号, 色码 从…起 主人,桌子 哪里 左帐号,5= 选

我试图附加一些虚拟数据作为参考

我正试图从几十万个账户中提取一组特定的账号。该池由潜在客户和后续客户组成。潜在客户以5位数字开始,以3位零结束。以下帐户使用相同的5个数字,并更改最后三个。每个潜在客户通常有25-75个后续客户

我的目标是从一组潜在客户中提取所有后续客户。 我面临的问题是,以下帐户不包含我希望过滤掉的隐含标准。潜在客户有一个颜色代码,所有后续客户都在该颜色代码下。不幸的是,这只是给出了线索

以下是我到目前为止的情况:

选择 账号, 色码 从…起 主人,桌子 哪里 左帐号,5= 选择leftaccountnumber,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