sql - 根据第二列的通用数据检索第一列的行

标签 sql sql-server

假设我有这样的输入:

1st column ---------2nd column
23 ---------------------- 0080
23 ---------------------- 0010
23 ---------------------- 0080
25 ---------------------- 0010
25 ---------------------- 0010
34 ---------------------- 0080
27 ---------------------- 0010
27 ---------------------- 0080

我想检索第一列中第二列中同时包含 0080 和 0010 数据的所有行。 结果将是这样的:

1st column--------- 2nd column
23 ---------------------- 0080
23 ---------------------- 0010
23 ---------------------- 0080
27 ---------------------- 0010
27 ---------------------- 0080

从结果中我们可以看到,第一列不包括 25,因为 25 在第二列中只有 0010,34 也是如此,在第二列中只有 0080。

我尝试使用嵌套查询,但它变得非常慢,因为我的表非常大(包含大约 30,000 多行)。我正在寻找对于大型数据表更快的智能技术。

最佳答案

select * from your_table
where col1 in 
(
   select col1
   from your_table
   where col2 in ('0080', '0010')
   group by col1
   having count(distinct col2) = 2
)

关于sql - 根据第二列的通用数据检索第一列的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12938700/

相关文章:

python - Pandas 类似于 SQL MINUS/EXCEPT 运算符,使用多列

c# - 根据 2 个表中列的比较更新表列 (SQL)

sql - 使用以前的非空值填充表中的空值。每列有几个空值?

sql-server - 在构建的动态字符串查询中使用 UNPIVOT

sql-server - SQL 恢复恢复;卡在 100%

sql - 查询 ssisdb 以查找包的名称

MYSQL 客户订单顺序

sql - 使用 CTE 显示数据中的传递关系

sql - 展平相交的时间跨度

mysql - 如何在mysql中在union之前插入一行?