sqlite3 两条语句合并成一条

时间:2020-12-26 21:54:14
表结构: 
tid(int)|p1(TEXT)|p2(TEXT) 


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


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

谢谢.

11 个解决方案

#1


sqlite3 两条语句合并成一条
你需要的结果长什么样呢?

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

这样?

#2


结果是这样
查tid=1的p1的值; --->这个是结果的第一列
查p2='bbb'的总数有多少. ---->这个是结果的第二列

'hello'|99
'good' |80

#3


为什么一行是 99 一行是 80 ? 你表中的 p2='bbb 记录数到底是哪一个?

#4


 (不要高估你的汉语表达能力或者我的汉语理解能力)
   建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
   参考一下这个贴子的提问方式 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)
   
   这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

   

#5


是我错了...

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

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


#6


是我错了... 

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' 

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

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

#7


越着急越发错.看这个....不好意思啊.

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 

越着急越发错....

#8


合并成一条可以,但速度并不比两条的快。(除在没有索引的情况会快)

select
max(case tid when 1 then p1 end),
sum(case p2 when 'bbb' then 1 end)
from table

#9


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

前面的除了max,sum还有什么别的这种关键字吗??都是什么意思???
这类的语句在什么书上能查到啊?我看一般的DB的书介绍的都是比较基础的,这类连在一起特别是对比语句的性能等的书比较少.当然和我接触的比较少也有关希望指点指点.再次感谢!!

#10


数据库系统概论(第四版)》 王珊 萨师煊   高等教育出版社 (掌握基础知识和概念) 

#11


谢谢.找个看看有不会的再来问来

#1


sqlite3 两条语句合并成一条
你需要的结果长什么样呢?

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

这样?

#2


结果是这样
查tid=1的p1的值; --->这个是结果的第一列
查p2='bbb'的总数有多少. ---->这个是结果的第二列

'hello'|99
'good' |80

#3


为什么一行是 99 一行是 80 ? 你表中的 p2='bbb 记录数到底是哪一个?

#4


 (不要高估你的汉语表达能力或者我的汉语理解能力)
   建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
   参考一下这个贴子的提问方式 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)
   
   这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

   

#5


是我错了...

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

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


#6


是我错了... 

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' 

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

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

#7


越着急越发错.看这个....不好意思啊.

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 

越着急越发错....

#8


合并成一条可以,但速度并不比两条的快。(除在没有索引的情况会快)

select
max(case tid when 1 then p1 end),
sum(case p2 when 'bbb' then 1 end)
from table

#9


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

前面的除了max,sum还有什么别的这种关键字吗??都是什么意思???
这类的语句在什么书上能查到啊?我看一般的DB的书介绍的都是比较基础的,这类连在一起特别是对比语句的性能等的书比较少.当然和我接触的比较少也有关希望指点指点.再次感谢!!

#10


数据库系统概论(第四版)》 王珊 萨师煊   高等教育出版社 (掌握基础知识和概念) 

#11


谢谢.找个看看有不会的再来问来