SQL使用where选择多列到多个变量
我有一个简单的表格如下SQL使用where选择多列到多个变量,sql,sql-server-2008,Sql,Sql Server 2008,我有一个简单的表格如下 CREATE TABLE [accounting].[ExtractControl]( [SourceSchema] [varchar](50) NOT NULL, [SourceTable] [varchar](150) NOT NULL, [SourceDatabase] [varchar](50) NOT NULL) Select @s1 = SourceDatabase from accounting.ExtractControl whe
CREATE TABLE [accounting].[ExtractControl](
[SourceSchema] [varchar](50) NOT NULL,
[SourceTable] [varchar](150) NOT NULL,
[SourceDatabase] [varchar](50) NOT NULL)
Select @s1 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'xxx' and SourceTable = 'xxx'
Select @s2 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'yyy' and SourceTable = 'yyy'
Select @s3 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'xxx' and SourceTable = 'yyy'
我想使用SourceSchema和SourceTable值选择SourceDatabase
目前我正在处理多个查询,如下所示
CREATE TABLE [accounting].[ExtractControl](
[SourceSchema] [varchar](50) NOT NULL,
[SourceTable] [varchar](150) NOT NULL,
[SourceDatabase] [varchar](50) NOT NULL)
Select @s1 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'xxx' and SourceTable = 'xxx'
Select @s2 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'yyy' and SourceTable = 'yyy'
Select @s3 = SourceDatabase from accounting.ExtractControl where SourceSchema = 'xxx' and SourceTable = 'yyy'
我相信这可以用更优雅的方式来实现!谢谢你的帮助 你想要这样的东西吗
select SourceDatabase from accounting.ExtractControl
where SourceSchema in ('xxx', 'yyy') and SourceTable in ('xxx', 'yyy');
这将返回SourceDatabase
,其中SourceSchema
为“xxx”或“yyy”,而SourceTable
为“xxx”或“yyy”。带有一个查询选项
select * from accounting.ExtractControl
where SourceSchema = 'xxx' or SourceSchema = 'yyy'
SELECT @s1 = MAX(CASE WHEN SourceSchema = 'xxx' and SourceTable = 'xxx' THEN SourceDatabase END),
@s2 = MAX(CASE WHEN SourceSchema = 'yyy' and SourceTable = 'yyy' THEN SourceDatabase END),
@s3 = MAX(CASE WHEN SourceSchema = 'xxx' and SourceTable = 'yyy' THEN SourceDatabase END)
FROM accounting.ExtractControl
演示此查询如何
select SourceDatabase
from accounting.ExtractControl
where SourceSchema in ('xxx', 'yyy')
and SourceTable in ('xxx', 'yyy')
and SourceTable = SourceSchema
我没有试过,但我认为这是您所需要的您发现当前解决方案有什么不完美之处?@DanielHilgarth我正在查询数据库3次,以返回3个变量,我在想,也许可以使用一个对Db的查询返回所有3个变量。嗨,Daniel,它确实会返回SourceDatabase,但我希望它们存储在不同的变量中,具体取决于例如的SourceSchema和SourceTable。s1应该是当SourceSchema和SourceTable都是“xxx”时s2->当两者都是“yyy”时。。。如果您确实需要三个不同的变量,请使用当前的解决方案。@dopplesoldner:同意Daniel:如果您希望三个结果包含三个不同的变量,请使用当前的解决方案。但是,如果您详细说明如何准确地使用这些变量,可能会有更好的方法(也可能没有)。您好,Mert,我希望它们存储在不同的变量中,具体取决于例如的SourceSchema和SourceTable。s1应该是当SourceSchema和SourceTable都是“xxx”时s2->当两者都是“yyy”时。。。我不认为有更好的办法。您可以在代码中选择like this和linq。如果您希望每个单元格的值都是不同的变量,那么现在就使用游标