将SQL表的两次查询结果作求交运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将SQL表的两次查询结果作求交运算相关的知识,希望对你有一定的参考价值。

查询了一个表,想看两次查询出来的结果的交集。

比如说这个表如下:
id property color
1 p1 red
2 p1 red
3 p1 red
4 p1 red
1 p2 green
2 p2 green
9 p2 greed
第一次查询的限制是where color = "red" and property = "p1",结果有4条
第二次查询的限制是where color = "green" and property = "p2",结果有3条
其中ID在第一次和第二次里都有的就是1和2,数量是2,我想知道,怎样查询才能得出在第一次和第二次里都有的ID数量是2这个结果呢?

假设你的表名是table1
select * from
  (select * from table1 where color='red' and property='p1') t1
inner join
  (select * from table1 where color='green' and property='p2') t2 
on t1.id=t2.id

参考技术A select *
from
table1 t1
innner join
table2 t2
on
t1.id=t2.id
where
t1.color = "red"
and t1.property = "p1"

and t2.color = "green"
and property = "p2"

在SQL查询结果中添加自增列的两种方法

解决办法《一》:
如果想查询出这个表的信息,并添加一列连续自增的ID,可用如下查询语句:

SELECT Row_Number() over ( order by getdate() ) as init , * FROM 表名

解决办法《二》:

使用关键字IDENTITY创建临时表

SELECT IDENTITY(int,1,1) as Nid,* INTO #T FROM 表名 SELECT * FROM #T

  

以上是关于将SQL表的两次查询结果作求交运算的主要内容,如果未能解决你的问题,请参考以下文章

数据库三级

关系代数

sql查询:使用内连接查询两张表的时候,如果左边表的一条记录对应了右边表的两条记录,结果显示排列问题

datawhale9月组队学习task04集合运算

Oracle里SQL语句的百分比运算

在SQL查询结果中添加自增列的两种方法