帮我解读一条很简单的delete语句,我是狂菜鸟。
发布网友
发布时间:2022-05-01 05:35
我来回答
共2个回答
热心网友
时间:2022-04-13 04:18
这两句话 好像是一个意思
第二句 估计是sqlserver 里面的语法
我对sqlserver 不是很熟
我 用 中文来 表示一下 看看
t1
T2 表2
DELETE 删除 表1
FROM 要满足从
t1 表1
LEFT JOIN 左连接 (下面解释 左连接是什么意思)
T2 表2
ON 以
t1.id=t2.id 表1的id这个 字段 与 表2的id这个 连接
WHERE 而
t2.id IS NULL 表2的id 为 空 (下面解释 空是什么意思)
例如
表1.id 这个字段里有 1,2,4,5
表2.id 这个字段里有 2,3,4
则 形如
表1 表2
1
2 <-- 2
3
4 <-- 4
5
t1 LEFT JOIN T2 ON t1.id=t2.id
那么 表1 左连接 表2 以 表1的id这个 字段 与 表2的id这个 连接
则变成了 保留 表1 的全部 只保留 表2 与表1 与之 id 相匹配的列
形如
表1 表2
1
2 <-- 2
3(这一列 就没有了)
4 <-- 4
5
空 这个 概念 就是 什么也 没有 你不要把它看成 0 因为 0 也是存在的数据
而 空 (null) 就是 无 是数据库里面的 一个 特殊 类型
WHERE t2.id IS NULL
而 t2.id IS NULL 表2的id 为 空
则表示 表2.id 这个字段 赋值为 空
而 上面 表2.id = 表1.id
这里则表示 把 表1.id 也 赋值为 空
形如
表1 表2
1
2 <-- 2 (把它 设为 空 表示表1 的这一列也为空)
4 <-- 4 (把它 设为 空 表示表1 的这一列也为空)
5
变成了
表1 表2
1
5
表1 只剩下 1,5 两列了
而前面的 是 DELETE 删除命令
则 表示 删除 表1 里面 id 为 1,5 的这两列
如果是查询 语句的话
select t1.* FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL
则表示 表1对 表2 以 id为对应的 查找不匹配
第二句话 跟第一句 话差不多 你把第一句 搞明白 就行了
第一句是 标准数据库 语言 可以 运用在 现今的 主流数据库上
第二句可能是 sqlserver 上面的 扩展的语言 我对 sqlserver 不是很熟
....写得一半的时候 我都 不想写了...累啊 (我也是 小菜 共同学习 )
热心网友
时间:2022-04-13 05:36
第1句:
DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL
这是一个通过左外关联删除t1中符合条件的记录。
但你的句子语法应该有问题:正确的如下:
DELETE FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL
删除语句的基本语法为delete from 表名 where子句
后面那部分的是左外连接
t1 LEFT JOIN T2,那么他们关于那个字段连接呢,就是t1的id和t2的id字段。
那么符合什么条件的才被删除呢 ?就是t2表中 id为空(null)时。
第2句:
DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL
从语句结构上跟上边功能一样,但还是怀疑你语法有问题,你是从那弄的这个句子。