Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于bool值扩展TSQL Select语句_Sql_Sql Server_Tsql - Fatal编程技术网

基于bool值扩展TSQL Select语句

基于bool值扩展TSQL Select语句,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图找出是否可以基于一个表中的布尔标志有选择地包含或省略某些表中的内容 有两个表有问题,我想做以下工作: SELECT id, isValid From Table1 If isValid = true THEN select * from Table2 基本上,如果给定字段为true,则在主select语句中包含另一个select语句,否则不包含 这可能吗 更新 只是想让事情变得更清楚一点,试着解释一下我想要实现的目标 表1包含13个字段,而表2包含4个字段。这两个表都有一个关系,使用i

我试图找出是否可以基于一个表中的布尔标志有选择地包含或省略某些表中的内容

有两个表有问题,我想做以下工作:

SELECT id, isValid From Table1

If isValid = true THEN select * from Table2
基本上,如果给定字段为true,则在主select语句中包含另一个select语句,否则不包含

这可能吗

更新 只是想让事情变得更清楚一点,试着解释一下我想要实现的目标

表1包含13个字段,而表2包含4个字段。这两个表都有一个关系,使用id而不是实名,仅在本例中使用

所以,每当表1中的字段isValid设置为true时,我就需要表2中id匹配的所有对应信息。如果isValid为false,则不要从表2中选择任何内容。您可以使用union all执行此操作:

这将选择表1中的所有行,然后仅选择表2中在表1中具有匹配有效记录的行

编辑:

我猜你只是想要一个左连接:

这将返回两个表中的所有列。如果isvalid不为true或表2中没有匹配项,则表2中的列为NULL。

请重试

Select id
case when isvalid = true then select * from table 2
from table1
left join table 2 on table1.id=table2.id

it really depends if is valid values is populated with string or int 

表1中的所有记录以及表2中ID匹配且表1中IsValid为true的所有记录

Select
   t1.*,t2.*
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.ID=t2.ID AND t1.IsValid=1

你不能存储一个真布尔值,你必须将true和false设置为varchars,或者你可以使用一个位,将1设置为true,将0设置为false。你可以显示一些示例数据和预期的输出吗?Thorsten,这只是目前的探索。我想看看我的任务是否可以在SQL中执行,然后转移到其他区域。表1和表2之间似乎没有关系,也没有筛选任何一个表。你如何测试你的状况?一个条目的isValid为true,或者所有条目都为true?仍不清楚您想要什么。制作一些样本数据。是否要显示表1的任何值?对于表1中的记录,如果IsValid='true',您想显示表2中的其他行还是其他列?表2的哪些记录准确?创建一些例子来说明你想要什么。只是一些组成表1的记录,一些用于表2的记录,以及查询应该生成的相应结果记录。嗨,Gordan,感谢您的回复。这与相关记录无关,而且,基于布尔标志添加到现有select语句中。正如上面的陈述试图解释的那样。如果table1.IsValid=true,则从表2中选择*并包含在原始语句中。另外,要添加。这种方法要求运算符相等,即两个表中的字段数量相同-这种情况并非如此。表1包含13个字段,表2包含4个。@csharpnewee。那么你的问题就没有意义了。SQL语句只能返回一组固定的列,而不是每行返回一组不同的列。请参阅上面的更新。我想我已经解释得好一点了。这是一个完整的select语句,包含上述两个表中的列。我在表2中设置了不正确的Id值,因此它不匹配。thanksHi James,这似乎是无效的SQLGhost,它返回表1的所有行20,表2的每个值都为null,即使是表1中isValid为1的一行。如果我将join改为Right join,则会得到一行,其中包含表2所需的信息,而表1中没有任何信息
Select id
case when isvalid = true then select * from table 2
from table1
left join table 2 on table1.id=table2.id

it really depends if is valid values is populated with string or int 
Select
   t1.*,t2.*
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.ID=t2.ID AND t1.IsValid=1