111,093
社区成员




USE tempdb
GO
IF OBJECT_ID('t1') IS NOT NULL DROP TABLE t1
IF OBJECT_ID('t2') IS NOT NULL DROP TABLE t2
CREATE TABLE t1 (id1 int,c1 VARCHAR(10))
CREATE TABLE t2 (id2 INT)
INSERT INTO t1 (id1,c1) VALUES (1,'aa')
INSERT INTO t1 (id1,c1) VALUES (1,'bb')
INSERT INTO t1 (id1,c1) VALUES (2,'cc')
INSERT INTO t2 VALUES (1)
INSERT INTO t2 VALUES (2)
SELECT * FROM t1,t2
/*
------- 3 * 2 = 6 条数据
id1 c1 id2
1 aa 1
1 bb 1
2 cc 1
1 aa 2
1 bb 2
2 cc 2
*/
SELECT * FROM t1,t2 WHERE t1.c1 LIKE '%b%'
/*
--t1 表过滤了一条数据出来,t2 要取全部 : 1*2=2
id1 c1 id2
1 bb 1
1 bb 2
*/
SELECT * FROM t1 INNER JOIN t2 ON t1.c1 LIKE '%b%'
/*
--两者未发生实际连接
--t1 表过滤了一条数据出来,t2 要取全部 : 1*2=2
id1 c1 id2
1 bb 1
1 bb 2
*/
SELECT * FROM t1 INNER JOIN t2 ON t1.id1=t2.id2 AND t1.c1 LIKE '%b%'
/*
-- 两者有实际字段连接,连接数量为 2 条,经 like 过滤后只有一条
id1 c1 id2
1 bb 1
*/
你的两个表, 没有实际的字段连接, 当然如此了。
看看上面的小例子就知道的了啦。