zoukankan      html  css  js  c++  java
  • 数据库除运算SQL实现

    已知A,B两表,B表是A表aid = 1 构成的子表。现通过B表查询A表中哪些aid同时全部包含了B表中所有的bid。(参考数据库除运算
    表A:



    表B:



    查询结果:


    查询SQL代码:
    SELECT DISTINCT A2.AID FROM A AS A2 WHERE A2.AID NOT IN(

    SELECT B2.BAID FROM (

    SELECT A.AID AAID,A.BID ABID,B1.AID BAID,B1.BID BBID FROM (SELECT A1.AID,B.BID FROM ((SELECT DISTINCT A.AID FROM A) AS A1 CROSS JOIN B) ) AS B1

    LEFT JOIN A USING(AID,BID)

    ) AS B2 WHERE B2.AAID IS NULL AND B2.BAID IS NOT NULL )

    附录:
    表A:

    -- ----------------------------

    -- Table structure for `a`

    -- ----------------------------

    DROP TABLE IF EXISTS `a`;

    CREATE TABLE `a` (

      `aid` int(11) NOT NULL,

      `bid` int(11) NOT NULL,

      PRIMARY KEY  (`aid`,`bid`)

    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    -- ----------------------------

    -- Records of a

    -- ----------------------------

    INSERT INTO `a` VALUES ('1', '1');

    INSERT INTO `a` VALUES ('1', '2');

    INSERT INTO `a` VALUES ('1', '3');

    INSERT INTO `a` VALUES ('1', '4');

    INSERT INTO `a` VALUES ('2', '1');

    INSERT INTO `a` VALUES ('2', '2');

    INSERT INTO `a` VALUES ('3', '1');

    INSERT INTO `a` VALUES ('3', '2');

    INSERT INTO `a` VALUES ('3', '3');

    INSERT INTO `a` VALUES ('3', '4');

    INSERT INTO `a` VALUES ('3', '5');

    INSERT INTO `a` VALUES ('4', '1');

    INSERT INTO `a` VALUES ('4', '2');

    INSERT INTO `a` VALUES ('4', '3');

    INSERT INTO `a` VALUES ('4', '4');

    表B:

    -- ----------------------------

    -- Table structure for `b`

    -- ----------------------------

    DROP TABLE IF EXISTS `b`;

    CREATE TABLE `b` (

      `AID` int(11) NOT NULL,

      `BID` int(11) NOT NULL,

      PRIMARY KEY  (`AID`,`BID`)

    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    -- ----------------------------

    -- Records of b

    -- ----------------------------

    INSERT INTO `b` VALUES ('1', '1');

    INSERT INTO `b` VALUES ('1', '2');

    INSERT INTO `b` VALUES ('1', '3');

    INSERT INTO `b` VALUES ('1', '4');

  • 相关阅读:
    Unity shader 代码高亮+提示
    PTA --- L2-003 月饼
    PTA --- L2-002 链表去重
    计蒜客 —— 字符串p型编码
    计蒜客 —— 最好的草
    最近忙科研立项 & 对博客的优化
    计蒜客 —— 删除单词后缀
    Tensorflow 保存模型 & 在java中调用
    Tensorflow 用训练好的模型预测
    Tensorflow 保存和载入训练过程
  • 原文地址:https://www.cnblogs.com/Zjmainstay/p/MySQL_divideQuery.html
Copyright © 2011-2022 走看看