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
Perterually
V2EX  ›  MySQL

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

  •  
  •   Perterually · Jun 21, 2019 · 4752 views
    This topic created in 2524 days ago, the information mentioned may be changed or developed.
    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 replies    2019-06-21 18:21:07 +08:00
    lazy0327
        1
    lazy0327  
       Jun 21, 2019
    你确定你 insert into 那句能运行咩?还是我不熟悉 mysql 的语法孤陋寡闻
    lazy0327
        2
    lazy0327  
       Jun 21, 2019
    试了一下,原来确实可以运行,这个写法第一次见呢。
    那你这个结果有什么问题呢,两个表都插了两条数据
    jihadwk
        3
    jihadwk  
       Jun 21, 2019
    看了一遍,没毛病
    Beeethoven
        4
    Beeethoven  
       Jun 21, 2019
    这个结果是正确的啊
    wjfz
        5
    wjfz  
       Jun 21, 2019
    你想要什么结果
    wjfz
        6
    wjfz  
       Jun 21, 2019
    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 去掉关联关系就比较清楚了
    lastpass
        7
    lastpass  
       Jun 21, 2019 via Android
    我执行了一遍。没有明白你想表达什么?
    出现一条数据有什么问题吗?
    Perterually
        8
    Perterually  
    OP
       Jun 21, 2019
    @lastpass 这个查询应该没有数据啊,但是会出现一条数据
    Perterually
        9
    Perterually  
    OP
       Jun 21, 2019
    @wjfz 按说查询应该没有数据
    Perterually
        10
    Perterually  
    OP
       Jun 21, 2019
    抱歉...我搞错了..我少了一个条件..

    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;
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3510 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 04:45 · PVG 12:45 · LAX 21:45 · JFK 00:45
    ♥ Do have faith in what you're doing.