• mysql 行行比较


    CREATE TABLE `t_ware_sale_statistics` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
      `business_id` bigint(20) NOT NULL COMMENT '业务机构编码',
      `ware_inside_code` bigint(20) NOT NULL COMMENT '商品自编码',
      `create_user` bigint(20) DEFAULT NULL COMMENT '创建人',
      `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
      `modify_user` bigint(20) DEFAULT NULL COMMENT '最终修改人',
      `modify_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最终修改时间',
      `is_delete` tinyint(2) DEFAULT '2' COMMENT '是否删除,1:是,2:否',
      PRIMARY KEY (`id`) USING BTREE,
      KEY `idx_business_ware` (`business_id`,`ware_inside_code`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='商品销售统计';
    
    INSERT INTO `demo`.`t_ware_sale_statistics` (`id`, `business_id`, `ware_inside_code`, `create_user`, `create_time`, `modify_user`, `modify_time`, `is_delete`) VALUES ('1', '1', '10', NULL, '2021-08-25 14:49:14', NULL, '2021-08-25 14:54:59', '2');
    INSERT INTO `demo`.`t_ware_sale_statistics` (`id`, `business_id`, `ware_inside_code`, `create_user`, `create_time`, `modify_user`, `modify_time`, `is_delete`) VALUES ('2', '1', '20', NULL, '2021-08-25 14:49:33', NULL, '2021-08-25 14:54:59', '2');
    INSERT INTO `demo`.`t_ware_sale_statistics` (`id`, `business_id`, `ware_inside_code`, `create_user`, `create_time`, `modify_user`, `modify_time`, `is_delete`) VALUES ('3', '1', '30', NULL, '2021-08-25 14:49:38', NULL, '2021-08-25 14:55:00', '2');
    INSERT INTO `demo`.`t_ware_sale_statistics` (`id`, `business_id`, `ware_inside_code`, `create_user`, `create_time`, `modify_user`, `modify_time`, `is_delete`) VALUES ('4', '2', '10', NULL, '2021-08-25 14:49:42', NULL, '2021-08-25 14:55:01', '2');
    INSERT INTO `demo`.`t_ware_sale_statistics` (`id`, `business_id`, `ware_inside_code`, `create_user`, `create_time`, `modify_user`, `modify_time`, `is_delete`) VALUES ('5', '2', '20', NULL, '2021-08-25 14:49:53', NULL, '2021-08-25 14:55:01', '2');
    INSERT INTO `demo`.`t_ware_sale_statistics` (`id`, `business_id`, `ware_inside_code`, `create_user`, `create_time`, `modify_user`, `modify_time`, `is_delete`) VALUES ('6', '3', '10', NULL, '2021-08-25 14:49:57', NULL, '2021-08-25 14:55:02', '2');
    INSERT INTO `demo`.`t_ware_sale_statistics` (`id`, `business_id`, `ware_inside_code`, `create_user`, `create_time`, `modify_user`, `modify_time`, `is_delete`) VALUES ('7', '3', '40', NULL, '2021-08-25 14:50:06', NULL, '2021-08-25 14:55:03', '2');

    问题就是:如何查询业务机构1下,10,20商品 和 业务机构2下,10,30商品

    方式一:union all

    -- explain
    SELECT * FROM `t_ware_sale_statistics`
    where business_id = 1 and ware_inside_code in (10,20)
    union all
    SELECT * FROM `t_ware_sale_statistics`
    where business_id = 2 and ware_inside_code in (10,30)

    方式二:or拼接

    -- explain
    SELECT * FROM `t_ware_sale_statistics`
    where (business_id = 1 and ware_inside_code in (10,20))
    or (business_id = 2 and ware_inside_code in (10,30))

    方式三:混查过滤

    -- explain
    SELECT * FROM `t_ware_sale_statistics`
    where business_id in (1,2) and ware_inside_code in (10,20,30)

    但是:查出来的结果集大于等于我们想要的结果集,所以还需要对查出来的结果集进行一次过滤,过滤出我们想要的结果集

    方式四:行行比较

    SQL-92 中加入了行与行比较的功能,这样一来,比较谓词 = 、< 、> 和 IN 谓词的参数就不再只是标量值了,还可以是值列表了

    -- explain
    SELECT * FROM `t_ware_sale_statistics`
    where (business_id,ware_inside_code)
    in ((1,10),(1,20),(2,10),(2,30));
  • 相关阅读:
    Foxit 出mac 版本啦
    mac 上的latex (有很多链接,侵权请通知,一定删除)
    集合转数组
    select2搜索框查询加遍历
    下拉框回显
    柱状堆积图Echarts
    echarts X轴数据显示不全问题
    Map静态键值对
    如何配置pl/sql (本地客户端)连接远程oracle服务器
    自定义验证jquery.validate
  • 原文地址:https://www.cnblogs.com/ooo0/p/15185101.html
Copyright © 2020-2023  润新知