mysql无关联连接_MYSQL查询没有关联的数据表的记录(LEFT JOIN ON)

本文介绍了如何在MYSQL中查询没有关联的数据表记录,通过LEFT JOIN ON操作,演示了两种方法:NOT IN子查询和LEFT JOIN结合IS NULL条件。示例中,展示了A、B两张表的关联查询,以及使用UNIX_TIMESTAMP处理日期的技巧。
摘要由CSDN通过智能技术生成

MYSQL查询没有关联的数据表的记录(LEFT JOIN ON)

注意与数据表关联之间的区别

A表

tid

subject

create table A(tid int(6) NOT NULL AUTO_INCREMENT UNIQUE,subject VARCHAR(20));

INSERT INTO A(subject) VALUES('a');

INSERT INTO A(subject) VALUES('b');

INSERT INTO A(subject) VALUES('c');

INSERT INTO A(subject) VALUES('d');

SELECT * FROM A; threads

+-----+---------+

| tid | subject |

+-----+---------+

|   1 | a       |

|   2 | b       |

|   3 | c       |

|   4 | d       |

+-----+---------+

B表

tid

name

create table B(tid int(6),name VARCHAR(20));

INSERT INTO B(tid,name) VALUES(1,'aa');

INSERT INTO B(tid,name) VALUES(1,'bb');

INSERT INTO B(tid,name) VALUES(1,'cc');

INSERT INTO B(tid,name) VALUES(1,'dd');

INSERT INTO B(tid,name) VALUES(2,'q');

INSERT INTO B(tid,name) VALUES(2,'w');

SELECT * FROM B; threadtags

+------+------+

| tid  | name |

+------+------+

|    1 | aa   |

|    1 | bb   |

|    1 | cc   |

|    1 | dd   |

|    2 | q    |

|    2 | w    |

+------+------+

两种方案:

第一种:SELECT tid,subject FROM A WHERE tid not in(SELECT tid FROM B);

第二种:SELECT t.tid,t.subject FROM A t LEFT JOIN B tt ON t.tid=tt.tid where tt.tid is null;

+-----+---------+

| tid | subject |

+-----+---------+

|   3 | c       |

|   4 | d       |

+-----+---------+

国际日期变更线

create table C(tid int(6) NOT NULL AUTO_INCREMENT UNIQUE,name VARCHAR(20),dateline int(10));

mysql> describe C;

+----------+-------------+------+-----+---------+----------------+

| Field    | Type        | Null | Key | Default | Extra          |

+----------+-------------+------+-----+---------+----------------+

| tid      | int(6)      | NO   | PRI | NULL    | auto_increment |

| name     | varchar(20) | YES  |     | NULL    |                |

| dateline | int(10)     | YES  |     | NULL    |                |

+----------+-------------+------+-----+---------+----------------+

INSERT INTO C(name,dateline) VALUES('qinmi',UNIX_TIMESTAMP(now()));

SELECT * FROM C;

mysql> SELECT * FROM C;

+-----+-------+------------+

| tid | name  | dateline   |

+-----+-------+------------+

|   1 | qinmi |       2011 |

|   2 | qinmi | 1300244856 |

+-----+-------+------------+

2 rows in set (0.00 sec)

UNIX_TIMESTAMP(now()) UNIX时间戳,这样的表示形式虽然不直观,不过也少了在MSSQL中比较排序等的问题了,因为是整型值的比较,很简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值