sqlite3 两条语句合并成一条

qizhi0119 2010-02-03 03:50:23
表结构:
tid(int)|p1(TEXT)|p2(TEXT)


查tid=1的p1的值;
查p2='bbb'的总数有多少.


如何用一条sql语句.要比用二条分别查能高效的那种.别比二次分别查还慢了的那种.

谢谢.
...全文
240 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ACMAIN_CHM 2010-02-04
  • 打赏
  • 举报
回复
数据库系统概论(第四版)》 王珊 萨师煊 高等教育出版社 (掌握基础知识和概念)

qizhi0119 2010-02-04
  • 打赏
  • 举报
回复
好用的.谢谢了.还有点问题问下!!万分感谢啊.
为什么前面的是max??/麻烦解释一下呗.谢谢了!!!
sum是求合的,max看着像是最大值啊咋能把p1的内容显示出来哪??麻烦解释下这个是什么意思??

前面的除了max,sum还有什么别的这种关键字吗??都是什么意思???
这类的语句在什么书上能查到啊?我看一般的DB的书介绍的都是比较基础的,这类连在一起特别是对比语句的性能等的书比较少.当然和我接触的比较少也有关希望指点指点.再次感谢!!
qizhi0119 2010-02-04
  • 打赏
  • 举报
回复
谢谢.找个看看有不会的再来问来
ACMAIN_CHM 2010-02-03
  • 打赏
  • 举报
回复
合并成一条可以,但速度并不比两条的快。(除在没有索引的情况会快)

select
max(case tid when 1 then p1 end),
sum(case p2 when 'bbb' then 1 end)
from table
qizhi0119 2010-02-03
  • 打赏
  • 举报
回复
越着急越发错.看这个....不好意思啊.

tid(int)|p1(TEXT)|p2(TEXT)
1|'hello'|'aaaa'
2|'xxxx'|'bbb'
3|'xxxx'|'bbb'
查tid=1的p1的值; select p1 from table where tid=1;
查p2='bbb'的总数有多少. select count(*) from table where p2='bbb'

上面的二条语句合成一条.要比分别执行二条快.
数据只能有一条,不可能出现二条...

'hello'|2

越着急越发错....
qizhi0119 2010-02-03
  • 打赏
  • 举报
回复
是我错了...

tid(int)|p1(TEXT)|p2(TEXT)
1|'hello'|'aaaa'
2|'xxxx'|'bbb'
3|'xxxx'|'bbb'
'hello'|2
查tid=1的p1的值; select p1 from table where tid=1;
查p2='bbb'的总数有多少. select count(*) from table where p2='bbb'

上面的二条语句合成一条.要比分别执行二条快.
数据只能有一条,不可能出现二条...

这样....等你半天了...呵呵没怀疑你的理解力.前几次你提供的语句都挺棒的.谢谢.
看看这回问题是否描述清了??
qizhi0119 2010-02-03
  • 打赏
  • 举报
回复
是我错了...

tid(int)|p1(TEXT)|p2(TEXT)
1|'hello'|'aaaa'
2|'xxxx'|'bbb'
3|'xxxx'|'bbb'
'hello'|2
查tid=1的p1的值; select p1 from table where tid=1;
查p2='bbb'的总数有多少. select count(*) from table where p2='bbb'

上面的二条语句合成一条.要比分别执行二条快.
数据只能有一条,不可能出现二条...
hello|2

这样....等你半天了...呵呵没怀疑你的理解力.前几次你提供的语句都挺棒的.谢谢.
看看这回问题是否描述清了??


ACMAIN_CHM 2010-02-03
  • 打赏
  • 举报
回复
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)

这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

ACMAIN_CHM 2010-02-03
  • 打赏
  • 举报
回复
为什么一行是 99 一行是 80 ? 你表中的 p2='bbb 记录数到底是哪一个?
qizhi0119 2010-02-03
  • 打赏
  • 举报
回复
结果是这样
查tid=1的p1的值; --->这个是结果的第一列
查p2='bbb'的总数有多少. ---->这个是结果的第二列

'hello'|99
'good' |80
ACMAIN_CHM 2010-02-03
  • 打赏
  • 举报
回复

你需要的结果长什么样呢?

tid(int)|p1(TEXT)|p2='bbb'的总数
1 aa1 99
1 aa2 99
1 aa3 99

这样?
相关推荐
发帖
其他数据库

2202

社区成员

其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
帖子事件
创建了帖子
2010-02-03 03:50
社区公告
暂无公告