[2020528]写sql语句不要忘记给字段加上表别名.txt --//许多开发写sql语句经常对于一些字段前面不加表别名,有时候主要问题在于开发压力太大,不注意这些细节. --//昨天看链接https://www.anbob.com/archives/5798.html,我觉得应该让开发养成习惯,给字段前加上表或者表别名. 1.环境: SCOTT@test01p> @ ver1 PORT_STRING VERSION BANNER CON_ID ------------------------------ -------------- -------------------------------------------------------------------------------- ---------- IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0 create table t1 as select rownum id ,'test'||rownum name from dual connect by level<=5; create table t2 as select rownum idx ,'test'||rownum name from dual ; --//分析略。 2.测试: SCOTT@test01p> select * from t1 where id in (select id from t2); ID NAME ---------- -------------------- 1 test1 2 test2 3 test3 4 test4 5 test5 SCOTT@test01p> @ tpt/hash HASH_VALUE SQL_ID CHILD_NUMBER HASH_HEX ---------- ------------- ------------ --------- 3260755764 511sg7v15qbtn 1 c25b2f34 SCOTT@test01p> @ expand_sql_text.sql 511sg7v15qbtn SELECT "A1"."ID" "ID","A1"."NAME" "NAME" FROM "SCOTT"."T1" "A1" WHERE "A1"."ID"=ANY (SELECT "A1"."ID" "ID" FROM "SCOTT"."T2" "A2") PL/SQL procedure successfully completed. --//表T2并没有id字段。子查询变成了(SELECT "A1"."ID" "ID" FROM "SCOTT"."T2" "A2")。 SCOTT@test01p> select * from t1 where name in (select name from t2); ID NAME ---------- -------------------- 1 test1 SCOTT@test01p> @ tpt/hash HASH_VALUE SQL_ID CHILD_NUMBER HASH_HEX ---------- ------------- ------------ --------- 2780930533 a9vgd1kkw38g5 0 a5c1a1e5 SCOTT@test01p> @ expand_sql_text.sql a9vgd1kkw38g5 SELECT "A1"."ID" "ID","A1"."NAME" "NAME" FROM "SCOTT"."T1" "A1" WHERE "A1"."NAME"=ANY (SELECT "A2"."NAME" "NAME" FROM "SCOTT"."T2" "A2") PL/SQL procedure successfully completed. --//如果改成删除就产生5条记录。 SCOTT@test01p> delete from t1 where id in (select id from t2); 5 rows deleted. SCOTT@test01p> rollback ; Rollback complete. --//所以应该让开发养成良好编写sql语句的习惯,给字段加上表名或者表别名.单表问题不大,多表情况下要特别注意. 3.继续测试: --//如果写成如下: SCOTT@test01p> select * from t1 where t1.id in (select t2.id from t2); select * from t1 where t1.id in (select t2.id from t2) * ERROR at line 1: ORA-00904: "T2"."ID": invalid identifier --//很容易定位错误。许多开发都没有养成好的习惯特别在复杂sql语句多表连接的情况下。
[2020528]写sql语句不要忘记给字段加上表别名.txt
来源:这里教程网
时间:2026-03-03 15:43:45
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- oracle goldengate实用文档两个(所有命令帮助及ogg错误代码解释)
- ogg 参数ETROLLOVER的使用
ogg 参数ETROLLOVER的使用
26-03-03 - 微信小程序怎么开通
微信小程序怎么开通
26-03-03 - Oracle case when改写SQL
Oracle case when改写SQL
26-03-03 - Oracle Rownum分页改写
Oracle Rownum分页改写
26-03-03 - 11g rac 等待事件resmgr:cpu quantum
11g rac 等待事件resmgr:cpu quantum
26-03-03 - 多个百家账号如何切换?(本方法自媒体平台都通用 )
多个百家账号如何切换?(本方法自媒体平台都通用 )
26-03-03 - 怎么在多个平台发同一篇原创文章?便捷方法教给你!
怎么在多个平台发同一篇原创文章?便捷方法教给你!
26-03-03 - Oracle RAC启动因CTSS导致的异常
Oracle RAC启动因CTSS导致的异常
26-03-03 - 有没有一个自媒体多平台同步工具?免费使用还不来看看
有没有一个自媒体多平台同步工具?免费使用还不来看看
26-03-03
