sql语句,无法绑定由多个部分组成的标识符 "xxx"

String sql = "select TOP 7 news_id,news_title,news_addtime,news_url from web_news_info a"
                + "LEFT JOIN web_news_small_type b "
                + "ON a.small_type_id = b.small_type_id "
                + "LEFT JOIN web_news_big_type c ON a.big_type_id = c.big_type_id "
                + "WHERE c.big_type_name = ‘新闻公告‘ and b.small_type_name <> ‘新闻‘ and news_view = ‘true‘ ORDER BY is_top DESC, news_addtime DESC";

今天在写一段sql语句时遇到的问题,上面的代码放在数据库中查询,没有问题,

但是运行程序的时候突然报了错,说什么多个small_type_id字段重复,我不是写了别名a,b,c吗。

同事找了几分钟把sql打印出来终于找到问题了,a后面少了一个空格,同事提醒我说格式一定要放好,空格要么在每一行前面加,要么在每一行后面加,我之前都没注意到这个,尴尬。

String sql = "select TOP 7 news_id,news_title,news_addtime,news_url from web_news_info a "
                + "LEFT JOIN web_news_small_type b "
                + "ON a.small_type_id = b.small_type_id "
                + "LEFT JOIN web_news_big_type c ON a.big_type_id = c.big_type_id "
                + "WHERE c.big_type_name = ‘新闻公告‘ and b.small_type_name <> ‘新闻‘ and news_view = ‘true‘ ORDER BY is_top DESC, news_addtime DESC";

原因:

1.未给不同的数据表起别名。

2.sql 语句错误,可能少了空格,建议将sql语句打印出来检查。

时间: 2024-08-07 21:53:01

sql语句,无法绑定由多个部分组成的标识符 "xxx"的相关文章

获取oracle sql语句中绑定变量值的方法

在诊断 sql的性能问题时,我们有时候需要获取其绑定变量的实际值,然后将此实际值带入到sql语句当中,用原来的sql构成select语句(带where条件),实际的执行一下,看一下选择性如何. 本文就是说获取其绑定变量值的方法.本文的编写得到枯荣长老的帮助,在此表示感谢. 本文适用于与oracle 10G或者更高版本的db. alter session set nls_date_format = 'yyyy-mm-dd,hh24:mi:ss'; set linesize 400 col sql_

拼接sql语句参数绑定

/** * 事务封装方法 * @access public * @param array $sqls 要执行的sql数组或语句 * @return boolean */ public function transExecuteSql($sqls, $vals) { try { $this->startTrans(); if (is_array($sqls)) { foreach ($sqls as $k => $sql) { if (!isNull($vals)) { foreach ($va

查询Oracle sql语句中绑定变量值的方法

alter session set nls_date_format = 'yyyy-mm-dd,hh24:mi:ss'; set linesize 400 col sql_Id format a20 col name format a20 col datatype_string format a14 col value_string format a20 select sql_id,name, datatype_string, last_captured,value_string from v$

Oracle 动态SQL语句

Oracle 动态SQL语句 (2012-06-18 16:36:12) 转载▼ 标签: oracle it   EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQLpackage包. 它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块.动态创建和执行SQL语句性能超前,EXECUTEIMMEDIATE的目标在于减小企业费用并获得较高的性能,较之以前它相当容易编码.尽管DBMS_SQL仍然可用,但是推荐使用EXECUTEIMMEDIATE,因为它获的收益在包

Oracle基础 动态SQL语句

一.静态SQL和动态SQL的概念. 1.静态SQL 静态SQL是我们常用的使用SQL语句的方式,就是编写PL/SQL时,SQL语句已经编写好了.因为静态SQL是在编写程序时就确定了,我们只能使用SQL中的DML和事务控制语句,但是DDL语句,以及会话控制语句却不能再PL/SQL中直接使用,如动态创建表或者某个不确定的操作时,这就需要动态SQL来实现. 2.动态SQL 动态SQL是指在PL/SQL编译时SQL语句是不确定的,如根据用户输入的参数的不同来执行不同的操作.编译程序对动态语句部分不进行处

捕获非绑定变量的SQL语句

之前一直用如下sql来查看非绑定变量的sql,但是不准 select hash_value, substr(sql_text, 1, 80)   from v$sqlarea  where substr(sql_text, 1, 40) in        (select substr(sql_text, 1, 40)           from v$sqlarea         having count(*) > 1          group by substr(sql_text, 1

Oracle批量插入数据SQL语句太长出错:无效的主机/绑定变量名

Oracle数据库,用mybatic批量插入数据: <insert id="saveBatch" parameterType="io.renren.entity.NodeDataEntity" databaseId="oracle"> insert into "NODE_DATA" ( "NODE_ID", "DATA_TIME", "DATA_VALUE"

oracle v$sqlarea 分析SQL语句使用资源情况 确认是否绑定变量

-如何确定系统中是否存在绑定变量的情况:首先创建一个表,用于存放整理过得数据:create table t1 as select sql_text from v$sqlarea;----V$SQLAREA本视图持续跟踪所有shared pool中的共享cursor,--在shared pool中的每一条SQL语句都对应一列.本视图在分析SQL语句资源使用方面非常重要./***1.查看消耗资源最多的SQL:SELECT hash_value, executions, buffer_gets, di

android之Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)

由于考虑到数据库的安全性,不被轻易SQL注入,执行查询语句时,一般不使用直接拼接的语句,而是使用参数传递的方法.然后在使用参数传递的方法中时,发现当使用like方式查询数据时,很容易出现一个问题. 错误案例: 复制代码代码如下: String myname = "abc";String sql = "select * from mytable where name like '?%'";Cursor cursor = db.rawQuery(sql, new Str