› 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 · 5085 views
    This topic created in 2661 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   ·   Privacy   ·   Solana   ·   2421 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 12:14 · PVG 20:14 · LAX 05:14 · JFK 08:14
    ♥ Do have faith in what you're doing.