【小记】诡异?同样的sql,mybatis和mysql运行的结果不一样!
2017-08-05 00:00
323 查看
//不说废话了,胆小勿入!
项目中mybatis中的 sql是这样的
没错 是左外连接查询。 但是我改成内连接
SELECT
a.id as id,
a.`name` as name,
a.discount as discount,
a.item_id as
itemId,
b.`name` as itemName
FROM
t_discount AS a
INNER JOIN t_item AS b ON
a.item_id = b.id
AND b.delete_flag =#{deleteFlag,jdbcType=TINYINT}
AND
a.delete_flag=#{deleteFlag,jdbcType=TINYINT}
或者 where的写法,同样的sql语句却查询不到内容。
最后发现:
是#{deleteFlag,jdbcType=TINYINT}传值为null导致的。
也就是说,在左外连接查询中,条件为null也能默认查询出内容;(奇怪)
但是内连接或者其他写法,缺无法查询出内容,因为条件参数为null
思考:可能是sql在预编译的时候,left join 和 inner join 的区别 导致的差异。
项目中mybatis中的 sql是这样的
<select id="selectByPage" parameterType="java.util.Map" resultType="com.shenhesoft.footbath.basis.pojo.Discount"> SELECT a.id as id, a.`name` as name, a.discount as discount, a.item_id as itemId, b.`name` as itemName FROM t_discount AS a LEFT JOIN t_item AS b ON a.item_id = b.id AND b.delete_flag =#{deleteFlag,jdbcType=TINYINT} AND a.delete_flag=#{deleteFlag,jdbcType=TINYINT} </select>
没错 是左外连接查询。 但是我改成内连接
SELECT
a.id as id,
a.`name` as name,
a.discount as discount,
a.item_id as
itemId,
b.`name` as itemName
FROM
t_discount AS a
INNER JOIN t_item AS b ON
a.item_id = b.id
AND b.delete_flag =#{deleteFlag,jdbcType=TINYINT}
AND
a.delete_flag=#{deleteFlag,jdbcType=TINYINT}
或者 where的写法,同样的sql语句却查询不到内容。
最后发现:
是#{deleteFlag,jdbcType=TINYINT}传值为null导致的。
也就是说,在左外连接查询中,条件为null也能默认查询出内容;(奇怪)
但是内连接或者其他写法,缺无法查询出内容,因为条件参数为null
思考:可能是sql在预编译的时候,left join 和 inner join 的区别 导致的差异。
相关文章推荐
- 将MySQL中sql运行结果保存到文件
- 将MySQL中sql运行结果保存到文件
- 将MySQL中sql运行结果保存到文件
- Mysql 将结果保存到文件 从文件里运行sql语句 记录操作过程(tee 命令的使用)
- 将MySQL中sql运行结果保存到文件
- mysql下怎样运行脚本以运行niuzi.sql为例
- Mysql 将结果保存到文件 从文件中执行sql语句 记录操作过程(tee 命令的使用)
- mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集
- MyBatis笔记:使用resultMap映射sql返回的结果
- c++ map使用问题【运行结果不一样】
- 一样的sql语句,不一样的结果!
- 批处理和单独运行时结果不一样
- java 爬虫在 netbeans 里运行和单独运行结果不一样
- mysql运行sql日期类型默认值'0000-00-00',报错
- mysql可以运行在不同sql mode模式下面,sql mode模式定义了mysql应该支持的sql语法,数据校验等
- mysql navicat 运行sql脚本,4个G,记录超出100%异常
- 同样的Python代码在PyCharm和Pydev里面的运行结果不一致
- mybatis的分页插件pagehelper-fix使用、数据库分页查询模板sql、总结mysql与oracle语句的区别
- 在向navicat导入数据时,运行sql文件,报错首行信息提示:mysql server has gone away
- 同样的sql语句在数据库中能查出结果,但是在java项目中,查不出来