tid(int)|p1(TEXT)|p2(TEXT)
查tid=1的p1的值;
查p2='bbb'的总数有多少.
如何用一条sql语句.要比用二条分别查能高效的那种.别比二次分别查还慢了的那种.
谢谢.
11 个解决方案
#1
你需要的结果长什么样呢?
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
查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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式 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
这样....等你半天了...呵呵没怀疑你的理解力.前几次你提供的语句都挺棒的.谢谢.
看看这回问题是否描述清了??
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'
上面的二条语句合成一条.要比分别执行二条快.
数据只能有一条,不可能出现二条...
这样....等你半天了...呵呵没怀疑你的理解力.前几次你提供的语句都挺棒的.谢谢.
看看这回问题是否描述清了??
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
越着急越发错....
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的书介绍的都是比较基础的,这类连在一起特别是对比语句的性能等的书比较少.当然和我接触的比较少也有关希望指点指点.再次感谢!!
为什么前面的是max??/麻烦解释一下呗.谢谢了!!!
sum是求合的,max看着像是最大值啊咋能把p1的内容显示出来哪??麻烦解释下这个是什么意思??
前面的除了max,sum还有什么别的这种关键字吗??都是什么意思???
这类的语句在什么书上能查到啊?我看一般的DB的书介绍的都是比较基础的,这类连在一起特别是对比语句的性能等的书比较少.当然和我接触的比较少也有关希望指点指点.再次感谢!!
#10
数据库系统概论(第四版)》 王珊 萨师煊 高等教育出版社 (掌握基础知识和概念)
#11
谢谢.找个看看有不会的再来问来
#1
你需要的结果长什么样呢?
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
查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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式 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
这样....等你半天了...呵呵没怀疑你的理解力.前几次你提供的语句都挺棒的.谢谢.
看看这回问题是否描述清了??
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'
上面的二条语句合成一条.要比分别执行二条快.
数据只能有一条,不可能出现二条...
这样....等你半天了...呵呵没怀疑你的理解力.前几次你提供的语句都挺棒的.谢谢.
看看这回问题是否描述清了??
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
越着急越发错....
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的书介绍的都是比较基础的,这类连在一起特别是对比语句的性能等的书比较少.当然和我接触的比较少也有关希望指点指点.再次感谢!!
为什么前面的是max??/麻烦解释一下呗.谢谢了!!!
sum是求合的,max看着像是最大值啊咋能把p1的内容显示出来哪??麻烦解释下这个是什么意思??
前面的除了max,sum还有什么别的这种关键字吗??都是什么意思???
这类的语句在什么书上能查到啊?我看一般的DB的书介绍的都是比较基础的,这类连在一起特别是对比语句的性能等的书比较少.当然和我接触的比较少也有关希望指点指点.再次感谢!!
#10
数据库系统概论(第四版)》 王珊 萨师煊 高等教育出版社 (掌握基础知识和概念)
#11
谢谢.找个看看有不会的再来问来