SELECT * FROM TABLE INNER JOIN TABLE1 on 1=1

我去年买了个表1 2017-12-28 09:28:09
这个1=1是什么意思?是不是跟TABLE.字段=TABLE1.字段一样的意思?
...全文
5833 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
盐蛋 2021-06-21
  • 打赏
  • 举报
回复

会有可能左表数据遗失吗

dongmusic 2018-06-26
  • 打赏
  • 举报
回复
我的建议是多实践,在实际的环境中运行起来,看看输入与输出到底是什么,然后再仔细的推想一下。
xiaoxiangqing 2018-02-02
  • 打赏
  • 举报
回复
join连接是需要on条件的,这个1=1实际上不过滤数据,返回两表张笛卡尔积
班长老六哥 2018-02-01
  • 打赏
  • 举报
回复
技术贴,学习了,每天进步一点点
中国风 2018-01-06
  • 打赏
  • 举报
回复
你的用法不规范,内联语法限制必需要在后面跟条件 笛卡尔集 1=1为条件 可用cross join 无需条件
CalvinR 2018-01-05
  • 打赏
  • 举报
回复
基本上不影响查询结果
道素 2017-12-29
  • 打赏
  • 举报
回复
两个集合的迪儿卡集 和 select * from a,b 一样,只是换成INNER JOIN的写法 你可以写成 1=1,也可以写成2=2 或者 2>1 或者1000000*0=0 只要值为true就行
小野马1209 2017-12-28
  • 打赏
  • 举报
回复
关联后面一定要有ON ,ON 是固定的 直接实践是最好的,结果就是全连接
DECLARE @#A TABLE (id varchar(10), Name varchar(20) NOT NULL)

INSERT INTO @#A  
SELECT '001','张三' UNION ALL
SELECT '002','李四' 

DECLARE @#B TABLE (id varchar(10), SCORE DECIMAL(19,9))
INSERT INTO @#B 
select '001',100 union all
select '002','90' union all
select '003','90'

select * from @#A A 
INNER  JOIN @#B B ON 1=1

/*
id	Name	id	SCORE
001	张三	001	100.000000000
002	李四	001	100.000000000
001	张三	002	90.000000000
002	李四	002	90.000000000
001	张三	003	90.000000000
002	李四	003	90.000000000
*/
xiaoxiangqing 2017-12-28
  • 打赏
  • 举报
回复
就是不限制条件而已,语法规定一定要有on
听雨停了 2017-12-28
  • 打赏
  • 举报
回复
上面这样写 on 1=1就是做了一个笛卡儿积的意思,比如table1有5条记录,table2有6条记录,写inner join table2 on 1=1的话就好比写了full join table2,最后得到的记录就是30条了
shoppo0505 2017-12-28
  • 打赏
  • 举报
回复
不是,这种写法就是笛卡儿积了。就是两个表格的所有数据都组合一次。

11,848

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧