【问题标题】:MySQL , Exclude result set (from one view) from result set (from another view) [duplicate]MySQL,从结果集(从另一个视图)中排除结果集(从一个视图)[重复]
【发布时间】:2022-01-21 13:38:39
【问题描述】:

您好,我有无法解决的问题,我有 2 个视图看起来像这样:

表1(插入用户)----------表2(删除用户)

[Name] [Date] [Name] [Date]
John ---- John ----
Andrew ---- Michael ----
Michael ----
Sam ----

我的任务是仅基于这 2 个视图创建一个视图,其中仅包含 STILL EXISTING 用户,因此检查具有某些 NAME 的用户是否在已删除的表上,并从插入的用户中排除这些用户。我想不通...

【问题讨论】:

    标签: mysql xampp


    【解决方案1】:

    您可以使用这样的查询:

    从 table1 t1 中选择名称 WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t1.name = t2.name);

    样本

    MariaDB [bernd]> select * from table1;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | Peter |
    |  2 | Paul  |
    |  3 | John  |
    +----+-------+
    3 rows in set (0.02 sec)
    
    MariaDB [bernd]> select * from table2;
    +----+------+
    | id | name |
    +----+------+
    |  1 | Paul |
    +----+------+
    1 row in set (0.00 sec)
    
    MariaDB [bernd]> SELECT NAME FROM table1 t1 WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t1.name = t2.name);
    +-------+
    | NAME  |
    +-------+
    | Peter |
    | John  |
    +-------+
    2 rows in set (0.09 sec)
    
    MariaDB [bernd]> 
    

    【讨论】:

    • 我有改变答案 - 测试一下
    【解决方案2】:

    你可以做一个左连接,只选择右边有空值的行:

    select inserted.name from inserted left join deleted 
    on inserted.name = deleted.name
    where deleted.name is null;
    

    【讨论】:

      猜你喜欢
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多