首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
V2EX  ›  MySQL

MySQL 发现一个问题,我无法理解

  •  
  •   Perterually · 124 天前 · 1933 次点击
    这是一个创建于 124 天前的主题,其中的信息可能已经有所发展或是发生改变。
    drop table if exists tmp_a;
    CREATE TABLE `tmp_a` (
      `date_a` date DEFAULT NULL,
      `id` int(11) DEFAULT NULL,
      UNIQUE KEY `id_idx` (`id`,`date_a`) USING BTREE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    drop table if exists tmp_b;
    CREATE TABLE `tmp_b` (
      `date_b` date DEFAULT NULL,
      `id` int(11) DEFAULT NULL,
      UNIQUE KEY `id_idx` (`id`,`date_b`) USING BTREE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
    
    truncate TABLE grab.tmp_a;
    
    truncate TABLE grab.tmp_b;
    
    insert into grab.tmp_a(id,date_a)values(1,'2019-01-01'),(1,'2019-01-02');
    insert into grab.tmp_b(id,date_b)values(1,'2019-01-01'),(1,'2019-01-02');
    

    我运行

    SELECT
    	*
    from 
    	grab.tmp_a as a 
    inner  join 
    	grab.tmp_b as b 
    on 
    	a.id = b.id 
    WHERE    
    	a.date_a > b.date_b;
    

    结果会有一条数据出来

    Screenshot_2019-06-21_17-40-25.png

    10 回复  |  直到 2019-06-21 18:21:07 +08:00
        1
    lazy0327   124 天前
    你确定你 insert into 那句能运行咩?还是我不熟悉 mysql 的语法孤陋寡闻
        2
    lazy0327   124 天前
    试了一下,原来确实可以运行,这个写法第一次见呢。
    那你这个结果有什么问题呢,两个表都插了两条数据
        3
    jihadwk   124 天前
    看了一遍,没毛病
        4
    Beeethoven   124 天前
    这个结果是正确的啊
        5
    wjfz   124 天前
    你想要什么结果
        6
    wjfz   124 天前
    2019-01-01 1 2019-01-01 1
    2019-01-01 1 2019-01-02 1
    2019-01-02 1 2019-01-01 1
    2019-01-02 1 2019-01-02 1

    把 where 去掉关联关系就比较清楚了
        7
    lastpass   124 天前 via Android
    我执行了一遍。没有明白你想表达什么?
    出现一条数据有什么问题吗?
        8
    Perterually   124 天前
    @lastpass 这个查询应该没有数据啊,但是会出现一条数据
        9
    Perterually   124 天前
    @wjfz 按说查询应该没有数据
        10
    Perterually   124 天前
    抱歉...我搞错了..我少了一个条件..

    SELECT
    a.*,b.*
    from
    grab.tmp_a as a
    inner join
    grab.tmp_b as b
    on
    a.id = b.id and
    a.date_a = b.date_b
    WHERE
    a.date_a > b.date_b;
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   981 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 20:33 · PVG 04:33 · LAX 13:33 · JFK 16:33
    ♥ Do have faith in what you're doing.