Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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中的where条件匹配和不匹配的数据 如果一个表中总共有1000条记录 我需要得到符合多个条件的总共500行 在N个条件中,有一个条件(A)类似于可选条件 如果只有50条记录与所有N条件匹配,则为600条 符合所有N-1条件的记录(A除外) 然后我需要得到一个50+的组合(600条记录中有450条记录),如下所示 来自SQL的500条记录 不打算使用LEFT JOIN,因为我们有一个包含大量数据的表 资料 例子:_Sql_Sql Server - Fatal编程技术网

选择“查询”以获取与SQL中的where条件匹配和不匹配的数据 如果一个表中总共有1000条记录 我需要得到符合多个条件的总共500行 在N个条件中,有一个条件(A)类似于可选条件 如果只有50条记录与所有N条件匹配,则为600条 符合所有N-1条件的记录(A除外) 然后我需要得到一个50+的组合(600条记录中有450条记录),如下所示 来自SQL的500条记录 不打算使用LEFT JOIN,因为我们有一个包含大量数据的表 资料 例子:

选择“查询”以获取与SQL中的where条件匹配和不匹配的数据 如果一个表中总共有1000条记录 我需要得到符合多个条件的总共500行 在N个条件中,有一个条件(A)类似于可选条件 如果只有50条记录与所有N条件匹配,则为600条 符合所有N-1条件的记录(A除外) 然后我需要得到一个50+的组合(600条记录中有450条记录),如下所示 来自SQL的500条记录 不打算使用LEFT JOIN,因为我们有一个包含大量数据的表 资料 例子:,sql,sql-server,Sql,Sql Server,从上表中,我需要得到4个与课程B、技术和25岁以上年龄相匹配的Id 课程表是一个可选条件,因此我需要得到ID1,2,3,5,6作为结果 从这6行中,我需要得到5条记录,其中我不能删除id 5,因为它匹配所有条件,相反,我可以删除除此之外的任何一条记录,因为其他记录只匹配一个条件 您将此条件添加到order by子句中的大小写表达式中,从而确保首先获得这些记录: SELECT TOP 500 * FROM mytable WHERE /* conditions */ ORD

  • 从上表中,我需要得到4个与课程B、技术和25岁以上年龄相匹配的Id
  • 课程表是一个可选条件,因此我需要得到ID1,2,3,5,6作为结果
  • 从这6行中,我需要得到5条记录,其中我不能删除id 5,因为它匹配所有条件,相反,我可以删除除此之外的任何一条记录,因为其他记录只匹配一个条件

您将此条件添加到
order by
子句中的大小写表达式中,从而确保首先获得这些记录:

SELECT    TOP 500 *
FROM      mytable
WHERE     /* conditions */
ORDER BY  CASE WHEN /* optional condition */ THEN 0 ELSE 1 END

您可以使用union
子句

create table #temp (id int, Age int, Course varchar(20))
insert into #temp values (1, 25, 'BE'),(2, 30, 'BE'),(3, 40, 'BE'),(4, 22, 'BE'),(5, 25, 'B. Tech'),(6, 27, 'BE')

select Top 4 * from #temp
where age >= 25 
union
select * from #temp
where (Course is null or Course = 'B. Tech')
union
select * from #temp
where age >= 25 OR (Course is null or Course = 'B. Tech')
输出如下所示

id  Age Course
1   25  BE
2   30  BE
3   40  BE
5   25  B. Tech
6   27  BE

您可以在此处找到live domo-

任何示例数据和预期输出都是必需的,您也尝试快速获得答案。@SurajKumar添加了一个示例数据