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
);