Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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/5/sql/77.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
Sql 存在列_1匹配的记录,然后仅显示列_1和列_2匹配的记录 如果不存在与列_1匹配的记录,则仅显示与列_2匹配的记录_Sql_Sql Server 2008 - Fatal编程技术网

Sql 存在列_1匹配的记录,然后仅显示列_1和列_2匹配的记录 如果不存在与列_1匹配的记录,则仅显示与列_2匹配的记录

Sql 存在列_1匹配的记录,然后仅显示列_1和列_2匹配的记录 如果不存在与列_1匹配的记录,则仅显示与列_2匹配的记录,sql,sql-server-2008,Sql,Sql Server 2008,或: 仅显示列_2匹配的记录。如果表中存在列_1匹配的记录,则进行筛选,使列_1也必须匹配 声明如下: select * from mytable where column_2 = 'match2' and ( column_1 = 'match1' or (select count(*) from mytable where column_1 = 'match1') = 0 ); 此类查询(尝试查找具有特定条件的记录,如果失败,则尝试使用其他条件)非常复杂 以下是您的标准:

或:

  • 仅显示列_2匹配的记录。如果表中存在列_1匹配的记录,则进行筛选,使列_1也必须匹配
声明如下:

select * from mytable 
where column_2 = 'match2'
and
(
  column_1 = 'match1'
  or
  (select count(*) from mytable where column_1 = 'match1') = 0
);
此类查询(尝试查找具有特定条件的记录,如果失败,则尝试使用其他条件)非常复杂

以下是您的标准:

  • 如果存在具有匹配列_1和匹配列_2的记录,则仅显示这些记录
  • 如果存在具有匹配列_1的记录,但这些匹配列_2均不存在,则显示无
  • 如果不存在与列_1匹配的记录,则仅显示与列_2匹配的记录
更仔细地看,它归结为:

  • 如果存在列_1匹配的记录,则仅显示列_1和列_2匹配的记录
  • 如果不存在与列_1匹配的记录,则仅显示与列_2匹配的记录
或:

  • 仅显示列_2匹配的记录。如果表中存在列_1匹配的记录,则进行筛选,使列_1也必须匹配
声明如下:

select * from mytable 
where column_2 = 'match2'
and
(
  column_1 = 'match1'
  or
  (select count(*) from mytable where column_1 = 'match1') = 0
);
此类查询(尝试查找具有特定条件的记录,如果失败,则尝试使用其他条件)非常复杂

以下是您的标准:

  • 如果存在具有匹配列_1和匹配列_2的记录,则仅显示这些记录
  • 如果存在具有匹配列_1的记录,但这些匹配列_2均不存在,则显示无
  • 如果不存在与列_1匹配的记录,则仅显示与列_2匹配的记录
更仔细地看,它归结为:

  • 如果存在列_1匹配的记录,则仅显示列_1和列_2匹配的记录
  • 如果不存在与列_1匹配的记录,则仅显示与列_2匹配的记录
或:

  • 仅显示列_2匹配的记录。如果表中存在列_1匹配的记录,则进行筛选,使列_1也必须匹配
声明如下:

select * from mytable 
where column_2 = 'match2'
and
(
  column_1 = 'match1'
  or
  (select count(*) from mytable where column_1 = 'match1') = 0
);


听起来像是个计划。没有考虑过工会的概念。谢天谢地,UNION在您的情况下不起作用,因为您要么想要一个结果集,要么想要另一个——这取决于是否存在与条件1匹配的记录。联合只能将两个结果集粘在一起。@ThorstenKettner嗯,是的,你说得对。在这种情况下,最好的方法可能是使用
@@ROW\u COUNT
或一个表变量。@Thorsten只是试图实现您的解决方案,但必须首先将其转换为我的数据方案:),听起来像是一个计划。没有考虑过工会的概念。谢天谢地,UNION在您的情况下不起作用,因为您要么想要一个结果集,要么想要另一个——这取决于是否存在与条件1匹配的记录。联合只能将两个结果集粘在一起。@ThorstenKettner嗯,是的,你说得对。在这种情况下,最好的方法可能是使用
@@ROW\u COUNT
或一个表变量。@Thorsten只是试图实现您的解决方案,但必须首先将其转换为我的数据方案:),听起来像是一个计划。没有考虑过工会的概念。谢天谢地,UNION在您的情况下不起作用,因为您要么想要一个结果集,要么想要另一个——这取决于是否存在与条件1匹配的记录。联合只能将两个结果集粘在一起。@ThorstenKettner嗯,是的,你说得对。在这种情况下,最好的方法可能是使用
@@ROW\u COUNT
或一个表变量。@Thorsten只是试图实现您的解决方案,但必须首先将其转换为我的数据方案:),听起来像是一个计划。没有考虑过工会的概念。谢天谢地,UNION在您的情况下不起作用,因为您要么想要一个结果集,要么想要另一个——这取决于是否存在与条件1匹配的记录。联合只能将两个结果集粘在一起。@ThorstenKettner嗯,是的,你说得对。在这种情况下,最好的方法可能是使用
@@ROW\u COUNT
或一个表变量。@Thorsten只是试图实现您的解决方案,但必须首先将其转换为我的数据方案:)我正在尝试实现您的解决方案,但无法理解
选择计数(*)背后的逻辑=0
统计表中具有匹配列_1的记录。然后将该值与零进行比较。我正在尝试实现您的解决方案,但是无法理解
select count(*)=0
您使用匹配列\u 1统计表中的记录背后的逻辑。然后将该值与零进行比较。我正在尝试实现您的解决方案,但是无法理解
select count(*)=0
您使用匹配列\u 1统计表中的记录背后的逻辑。然后将该值与零进行比较。我正在尝试实现您的解决方案,但是无法理解
select count(*)=0
您使用匹配列\u 1统计表中的记录背后的逻辑。然后将该值与零进行比较。
select ... from ...
where column_1 = @param
union all
select ... from ...
where column_1 <> @param and column_2 = @param
select * from mytable 
where column_2 = 'match2'
and
(
  column_1 = 'match1'
  or
  (select count(*) from mytable where column_1 = 'match1') = 0
);