android 执行多条sql,android 执行sql的长度限制

在项目中遇到SQL执行错误,提示缺少'M.id'列。经过测试,发现相同的SQL在SQLite工具中正常工作。问题出在应用执行SQL的方法上,可能是长度限制。最终通过将'SELECT DISTINCT'改为'SELECT *'解决了问题,怀疑是由于列名长度导致的问题,但未找到官方解释。
摘要由CSDN通过智能技术生成

今天做项目的时候遇到这样一个问题:

项目中执行sql语句,报错,说是没有M.id这个列。

sql语句:

select distinct M.[id],M.[book_id],M.[mark_title],M.[mark_content],M.[type],

M.[chapter_id],M.[chapter_filename],M.[filename],M.[create_time],M.[param1],M.[param2],

M.[numchapter],M.[flag],M.[extra],N.[numchapter]

from

(select A.[id],A.[book_id],A.[mark_title],A.[mark_content],A.[type],

A.[chapter_id],A.[chapter_filename],A.[filename],A.[create_time],B.[param1],B.[param2],

A.[numchapter],A.[flag],A.[extra]

from book_new_mark A left join book_mark_rowindex B

on (A.[book_id] = B.[book_id] or A.[filename] = B.[book_id]) and A.[type] = B.[type]

and (A.[extra] = B.[account] or ((A.[extra] is null or A.[extra] = '')

and(B.[account] is null or B.[account] = ''))) order by A.[create_time],A.[id] asc) M left join book_case N

on M.[book_id] = N.[bookid]

但是我在SQLite工具上测试sql可用,而且应用上也有类似的语句成功运行。

我折腾了半天,最后改成这样:

select distinct M.id,M.book_id,M.mark_title,M.mark_content,M.type,M.chapter_id,M.chapter_filename,

M.filename,M.create_time,M.param1,M.param2, M.numchapter,M.flag,M.extra,N.numchapter

from

(select *

from book_new_mark A left join book_mark_rowindex B

on (A.book_id = B.book_id or A.filename = B.book_id)

and A.type = B.type and (A.extra = B.account or ((A.extra is null or A.extra = '')

and(B.account is null or B.account = ''))) order by A.create_time,A.id asc) M left join book_case N

on M.book_id = N.bookid

这样就可以了,我怀疑是因为长度问题,但是搜了一下没有说明,执行sql方法的API也没有说明。求大拿说明?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值