当前位置: 首页 > news >正文

【Bug】SQL无法绑定由多个部分组成的标识符

文章目录

    • 问题
    • 原因
    • 解决
    • 拓展

问题

执行sql报:无法绑定由多个部分组成的标识符

原因

取了别名却没用别名,如下面这些情况

select * from biz_production_order_work_detail temp where biz_production_order_work_detail.create_time>'2023-02-13'select biz_production_order_work_detail.create_time from biz_production_order_work_detail temp where temp.create_time>'2023-02-13'

上面是博主自己模拟测出来的,网上也有其他情况(联合查询),确实一开始出问题的代码也有进行联合查询,即文末代码:

1、联合查询的条件有重复的,未指定哪个表的字段信息
例 a表有id,b表也有id, select id from a left join b on a.id=b.id
这时候查询条件的id没有标明是哪个表的id就会出现这个问题

2、查询条件时未指定联合查询的表,查询条件就直接用另一个表的字段了
例可能在别的语言里面会有拼接sql的写法,比如java,jdbc方式,sql语句是动态的
sql: select*from a 在此基础做sql语句的拼接
理想拼接后的sql:select*from a left join b on a.id=b.id where b.id=xxx
实际拼接后的sql: select*from a where b.id=xxx
下面这情况就会造成这个错误,所以做这种拼接sql的时候打印一下sql语句是否出现问题

解决

正确使用,都用别名取数,都用表名

--都用别名
select temp.create_time from biz_production_order_work_detail temp where temp.create_time>'2023-02-13'
--都用表名
select biz_production_order_work_detail.create_time from biz_production_order_work_detail  where biz_production_order_work_detail.create_time>'2023-02-13'

拓展

查询结果字段作为另一个查询语句的字段,该查询语句里的相关表会受到外部查询条件的影响

 select base_procedure_id, plan_qty,convert(date,work.modify_time) inittime,--括号里的这段会受到work.modify_time > '2022-12-01' and work.modify_time < '2022-12-07' 的影响 ( select SUM(ok_qty) from biz_production_report, biz_production_order_work_detailwhere biz_production_report.order_work_detail_id = biz_production_order_work_detail.idand biz_production_order_work_detail.production_order_work_id = work.idand biz_production_report.report_date < work.modify_time ) as 'actqty',prod_poodfrom biz_production_order_work work,biz_production_order orderswhere work.modify_time > '2022-12-01' and work.modify_time < '2022-12-07' and work.biz_production_order_id=orders.id
http://www.lryc.cn/news/6303.html

相关文章:

  • Games102 学习笔记
  • 知识图谱基本知识点以及应用场景
  • IDEA中常用的快捷键
  • 朗润国际期货招商:桥水基金四季度投资组合
  • Linux管道命令(pipe)全
  • mybatis条件构造器(一)
  • 车联网之电子围栏中ConnectStreamed应用【二十】
  • 临时文件tempfile
  • vue3封装数值动态递增组件
  • JavaWeb_RequestResponse
  • C语言刷题——“C”
  • 【刷题】搜索——BFS:城堡问题(The Castle)
  • 深度学习——torch相关函数用法解析
  • ubuntu 20使用kubeadm安装k8s 1.26
  • 低代码开发平台|制造管理-生产过程管理搭建指南
  • python对多个csv文件进行合并(表头需一致)
  • Salesforce Apex调用邮件模板
  • windows本地开发Spark[不开虚拟机]
  • 一文教你快速估计个股交易成本
  • Leetcode—移除元素、删除有序数组中的重复项、合并两个有序数组
  • 面试(十)大疆 安全开发 C++1面
  • 短信链接跳转微信小程序
  • 吉林电视台启用乾元通多卡聚合系统广电视频传输解决方案
  • Linux常用命令1
  • 【C++进阶】一、继承(总)
  • AttributeError: module ‘lib‘ has no attribute ‘OpenSSL_add_all_algorithms
  • Python实现视频自动打码功能,避免看到羞羞的画面
  • 说说Knife4j
  • Java学习笔记-03(API阶段-2)集合
  • 「3」线性代数(期末复习)