为列的每种不同类型提取多个相似行

2024-02-03

Input

+--------+------+------+
|  col1  | col2 | col3 |
+--------+------+------+
| apple  | d    |   10 |
| apple  | d    |   44 |
| apple  | e    |   55 |
| orange | d    |   99 |
| orange | c    |   33 |
| orange | d    |   10 |
| banana | e    |   55 |
| banana | d    |   10 |
+--------+------+------+

所需输出

+--------+------+------+
|  col1  | col2 | col3 |
+--------+------+------+
| apple  | d    |   10 |
| orange | d    |   10 |
| banana | d    |   10 |
+--------+------+------+

我们将检查 col2 和 col3 中 N 种不同类型的水果。

我们只想列出那些 col2 和 col3 值相同并且所有水果都存在的行

扩展解释:

你可以这样想:-

STEP 1

分离出所有不同类型的水果:-

Apple:-

+-------+------+------+
| col1  | col2 | col3 |
+-------+------+------+
| apple | d    |   10 |
| apple | d    |   44 |
| apple | e    |   55 |
+-------+------+------+

Orange:-

+--------+------+------+
|  col1  | col2 | col3 |
+--------+------+------+
| orange | d    |   99 |
| orange | c    |   33 |
| orange | d    |   10 |
+--------+------+------+

Banana:-

+--------+------+------+
|  col1  | col2 | col3 |
+--------+------+------+
| banana | e    |   55 |
| banana | d    |   10 |
+--------+------+------+

STEP 2:-

现在只选择那些行

  • 具有相同的 col2 和 col3 值

AND

  • 它存在于所有类型的水果中。

观察:-

“apple e 55”和“banana e 55”具有相同的 col2 和 col3 值,但未选择它,因为“orange e 55”不存在。

如果您使用临时表,请确保它应该是通用的。它应该支持N个水果。

注意:- 这不是学生的作业:D。我用简单的话解释它,因为它是一个漫长查询的一部分,我对如何解决它的想法为零。我一直在使用创建临时表的技术,但遇到了一些问题。它不是通用的。所以,我相信这个问题可能有更好的解决方案。


基本上,你可以获得所有水果中都存在的记录,无论name通过这个查询,

SELECT  col2, col3
FROM    tableName
GROUP   BY col2, col3
HAVING  COUNT(*) = (SELECT COUNT(DISTINCT col1) FROM tableName)
  • SQLFiddle 演示 http://sqlfiddle.com/#!2/0472b/2

一组两列中的记录总数:col2 and col3必须等于水果总数。SELECT COUNT(DISTINCT col1) FROM tableName.

因此,要获取所有水果中存在组合的所有记录,我们需要JOIN它与桌子本身。

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  col2, col3
            FROM    tableName
            GROUP   BY col2, col3
            HAVING  COUNT(*) = (SELECT COUNT(DISTINCT col1) FROM tableName)
        ) b ON a.col2 = b.col2 AND
                a.col3 = b.col3
  • SQLFiddle 演示 http://sqlfiddle.com/#!2/0472b/1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为列的每种不同类型提取多个相似行 的相关文章

随机推荐

  • 在 C# 中检查来自不同类的变量

    问候 我有2节课 一个称为 程序 另一个称为 日志 名为 Programs 的类有public const string m sEnviron 在顶部附近 我需要通过名为 Logs 的类检查 m sEnviron 变量设置的内容 变量 m
  • 在 Django/Python 中标准化街道地址

    我有一个 Django 表单 其中一个字段是TextInput街道地址 我想标准化数据 例如 gt gt normalize 420 East 24th St 420 E 24th Street gt gt normalize 221 Am
  • 使用 100% cpu 的相对简单的 Python 脚本

    我不会提供代码 因为它太长了 python 脚本涉及执行在 while 循环中运行的大量命令 基本结构 while True The meat goes here with the odd if and stuff 现在我已经完成了它 我注
  • iOS Swift 以编程方式连接 WiFi 并区分密码错误和范围内没有 WiFi

    NEHotspotConfiguration工作正常 但错误是nil当我尝试连接的 SSID 不可用 超出范围或关闭 或我提交的密码不正确时 我究竟做错了什么 我希望能够区分这两种情况 以便我可以相应地通知用户 代码片段 func conn
  • Grunt/Bundler 不会使用指定的 sass 版本

    我们有一个带有 Grunt 和 Bundler 设置的项目 所有这些都安装没有问题 生成了 Gemfile lock 下拉了正确的 gem 并使用 npm 创建了 grunt 文件 我们开始监视该项目 它在 sass 编译上崩溃 因为它使用
  • 测试 DataFrame 中的后续值

    我有一个 DataFrame 其中一列包含正整数和负整数 对于每一行 我想查看有多少连续行 从当前行开始并包括当前行 具有负值 所以如果一个序列是2 1 3 1 1 结果将是0 2 1 0 1 我可以通过迭代所有索引来做到这一点 使用 il
  • Python:如何让我的 tkinter 应用程序正确退出?

    我需要知道如何在 Mac 上执行此操作 因为每当我尝试退出它时 我都必须强制退出它 当用户单击退出按钮时 是否有正确的方法使 Tkinter 正常退出 我知道怎么做了 我只是放了一个简单的exit 主循环之后的命令
  • 在 Win32 / COM 方法上调用 PInvoke 时,通常会出现明显的性能影响吗?

    我想知道是否有人对在托管 Net 代码的 Win32 方法上使用 DLLImport PInvoke 的负面方面有一个不错的解释或概述 我计划使用各种 Win32 方法 并希望更好地了解这样做的负面影响 Thanks Brian 根据MSD
  • 如何在 EF CF 中设置 POCO 的默认值?

    在实体框架代码优先方法中 如何为 POCO 的 EntityConfiguration 类中的属性设置默认值 public class Person public int Id get set public string Name get
  • 应用程序最小化时的 Android 活动和片段生命周期问题

    我有一个带有多项选择列表的片段 我正在尝试保存当前在列表中检查的项目的实例 并在应用程序最小化等情况下恢复它们 测试步骤 到达多选列表片段 检查一些列表项 按主页键最小化应用程序 按多任务按钮并选择我的应用程序来恢复它 以下是我正在使用的代
  • PDFBox - PageDrawer 在 PdfPagePanel 外部绘制

    我正在使用 PDFBox 在我的应用程序中显示生成的 pdf 文件 我将 PdfPagePanel 添加到 JScrollPane 中 当我缩小窗口并出现滚动条时 PageDrawer 会绘制到滚动条上 这种效果也出现在 PDFReader
  • 如何在XSLT中实现if-else语句?

    我试图在 XSLT 中实现 if else 语句 但我的代码无法解析 有人有什么想法吗
  • 显示 git diff,忽略文件权限更改?

    我跑过好几个chmod在我的实时服务器中 现在当我做一个git diff在那里 我看到很多old mode 100644 new mode 100755 我还在那里更改了一些文件 但我只是 git diff 只是为了显示文件上的更改 忽略文
  • 保留的 ASP.NET MVC 控制器名称?

    所以我花了大约一个小时来调试为什么我收到客户端 404 和服务器端System Web Http HttpResponseException on System Web Http dll System Web Http Dispatcher
  • Chromium WebView 不存在

    我正在尝试使用 Phonegap 创建一个 Hello World 应用程序 但当我调用在模拟器上运行该应用程序时 它崩溃了 我遵循了指南here http docs phonegap com en edge guide platforms
  • Scikit-learn 从分段时间序列创建标记数据集

    INTRO 我有一个 Pandas DataFrame 代表分段的不同用户 即 user1 和 user2 的时间序列 我想使用上述 DataFrame 训练 scikit learn 分类器 但我无法理解必须创建的 scikit lear
  • 生成渐变进度条

    我正在使用下面的代码在进度栏中显示渐变 那么如何创建如上图所示的渐变进度条呢 我已经尝试了很多解决方案但还没有成功
  • 这段 PHP 代码有什么作用? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 最近接管一个网站 在多个文件中发现以下代码 认为是恶意代码 关于它的作用有什么想法吗 它似乎 第一行是 POST 第二行检查 POST 是
  • 当属性丢失时,如何强制 System.Text.Json 序列化程序抛出异常?

    Json NET 行为可以通过属性定义 如果 json 负载不包含必需的属性 则使用默认值或仅抛出异常 Yet System Text Json序列化器默默地什么也不做 正在上课 public sealed class Foo Requir
  • 为列的每种不同类型提取多个相似行

    Input col1 col2 col3 apple d 10 apple d 44 apple e 55 orange d 99 orange c 33 orange d 10 banana e 55 banana d 10 所需输出 c