【问题标题】:mysql How to Find Difference between two rows in same table and list the Unmatched Records? mysql finding unmatched rows in a tablemysql 如何查找同一表中两行之间的差异并列出不匹配的记录? mysql在表中查找不匹配的行
【发布时间】:2016-08-27 23:54:22
【问题描述】:

在 MySQL 中,我想找出同一张表中两行之间的差异 我需要在哪里显示不匹配的记录

这是我的表,名为project_details

CREATE TABLE IF NOT EXISTS `project_details` (
  `project_name` varchar(100) NOT NULL,
  `project_detail` varchar(100) NOT NULL,
  `project_version` varchar(100) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


INSERT INTO `project_details` (`project_name`, `project_detail`, `project_version`) VALUES
('project_1', 'php_mysql', '1.0'),
('project_1', 'php_mysql_android', '2.0'),
('project_1', 'php_mysql_android_ajax', '3.0'),
('project_2', 'php_mysql', '1.0'),
('project_2', 'php_mysql_android', '2.0'),
('project_2', 'php_mysql_android_ajax', '3.0'),
('project_2', 'php_mysql_jquery', '1.0'),
('project_2', 'php_mysql', '4.0');

这就是桌子的样子

我想要表中不匹配记录的结果 那是通过比较 project_1 和 project_2

需要比较 project_name 中的 project_1 和 project_2 才能得到 project_detail 和 project_version 的不匹配记录

我需要这样的结果,只显示不匹配的记录,请参阅下面 图片

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    使用NOT EXISTS 检索输出,其中对于不同的项目名称,没有基于详细信息和版本的匹配行:

    select *
    from project_details p1
    where not exists (
      select 1
      from project_details p2
      where p1.project_name <> p2.project_name
        and p1.project_detail = p2.project_detail
        and p1.project_version = p2.project_version
      )
    

    SQL Fiddle 看看它是如何工作的。

    输出

    project_name    project_detail      project_version
    ---------------------------------------------------
    project_2       php_mysql_jquery    1.0
    project_2       php_mysql           4.0
    

    【讨论】:

      【解决方案2】:

      试试这样的:

       select pd1.* from project_details as pd1 
           left join project_details as pd2 
           on (
             pd1.project_detail=pd2.project_detail and 
             pd1.project_version=pd2.project_version and
             pd1.project_name<>pd2.project_name)
           where pd2.project_name is null
      

      【讨论】:

      • 您只想加入具有不同项目名称的行。
      猜你喜欢
      • 1970-01-01
      • 2015-01-19
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-13
      相关资源
      最近更新 更多