求一些SQL语句? 本帖最后由 tangwenlong 于 2013-05-19 21:12:15 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 shortUrl longUrl clickNum commNum shareNum Lxwzyy www.xxx.com 12 34 45 Ssssss www.ggg.com 43 32 35select shortUrl,longUrl, SUBSTRING_INDEX(countString23,',',1) as clickNum, SUBSTRING_INDEX(SUBSTRING_INDEX(countString23,',',2),',',-1) as commNum, SUBSTRING_INDEX(countString23,',',-1) as shareNumfrom url_20130519_hour 其它逻辑描述看得太累。 建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式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) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。 url_20130519_count这张表的数据是根据main_info_01和表url_20130519得到的。url_20130519中存储所有userId名下的shortUrl的clickNum,commNum,shareNum总和。 myCount 字段表示每一个userId下有多少个shortUrl。例如main_info_01表的数据如下: userId shortUrl firstTime udateTime 406 Lxwzyy 406 Ssssss 476 ffffff 476 eeeeee 476 gggggg 表url_20130519中的数据如下所示: shortUrl longUrl clickNum commNum shareNum Lxwzyy www.xxx.com 12 34 45 ffffff www.ffff.com 22 13 23 eeeeee www.ssss.com 65 34 12 gggggg www.xxxx.com 32 1 3 Ssssss www.ggg.com 43 32 35 则url_20130519_count表中的数据应该如下所示:userId myCount clickNum commNum shareNum 406 2 55=(12+43) 66=(34+32) 90=(45+35)476 3 119=(22+65+32) 48=(13+34+1) 38=(23+12+3) 这些select出来的字段怎样插入url_20130519表中呢?谢谢 insert into url_20130519select .... 不要贴图,直接贴文本, 另外insert into 语句贴哪儿了? 我按照格式重新把问题提出来一遍如下。create database if not exists wburl;use wburl;create table if not EXISTS main_info_01( userId int unsigned not null, shortUrl varchar(256) not null, firstTime int unsigned default 0, updateTime int unsigned default 0,PRIMARY key(userId,shortUrl));create table IF NOT EXISTS url_20130519_hour (shortUrl varchar(256) PRIMARY key ,longUrl text ,countString23 varchar (256) default '0,0,0');create table IF NOT EXISTS url_20130519 ( shortUrl varchar(256) PRIMARY key , longUrl text , clickNum int unsigned default 0, commNum int unsigned default 0, shareNum int unsigned default 0);create table IF NOT EXISTS url_20130519_count ( userId int unsigned PRIMARY KEY , myCount int unsigned default 0, clickNum int unsigned default 0, commNum int unsigned default 0, shareNum int unsigned default 0);use wburl;insert into main_info_01 values (406,'dddddd',1368974450,1368974450),(406,'wqwqqw',1368974499,1368974499),(456,'jijiji',1368974674,1368974674),(456,'klklkl',1368974700,1368974700),(456,'njnjnj',1368974727,1368974727);insert into url_20130519_hour values('dddddd','www.xxx.com','12,34,32'),('wqwqqw','www.dddd.com','56,12,43'),('jijiji','www.sss.com','2,4,5'),('klklkl','www.sss.com','3,32,12'),('njnjnj','www.ff.com','34,4,3');开始只有main_info_01和url_20130519_hour表中有原始数据。所以url_20130519表格中的数据是直接由url_20130519_hour中的数据生成的。生成算法的伪代码为:For 每一条记录 in url_20130519_hour Do Select shortUlr, longUrl, countString23 这三个字段 将countString23 这个字符串字段按照“,”分割出三个量 至此得到shortUlr, longUrl,和三个整型量作为一条记录插入url_20130519表中 Done按照以上插入的数据,url_20130519表格中数据应该为:shortUrl longUrl clickNum commNum shareNumdddddd www.xxx.com 12 34 32 wqwqqw www.dddd.com 56 12 43jijiji www.sss.com 2 4 5klklkl www.sss.com 3 32 12njnjnj www.ff.com 34 4 3表url_20130519_count中的数据是根据main_info_01和url_20130519中的数据生成的。所以为了得到表url_20130519_count,必须先得到url_20130519表中的数据。具体例子在上面 不要贴图,直接贴文本, 另外insert into 语句贴哪儿了?将insert语句贴出拉了,第二个问题的例子请参见上文。谢谢啦 url_20130519_count生成数据的例子:url_20130519_count这张表的数据是根据main_info_01和表url_20130519得到的。url_20130519中存储所有userId名下的shortUrl的clickNum,commNum,shareNum总和。 myCount 字段表示每一个userId下有多少个shortUrl。例如main_info_01表的数据如下: userId shortUrl firstTime udateTime 406 Lxwzyy 406 Ssssss 476 ffffff 476 eeeeee 476 gggggg 表url_20130519中的数据如下所示: shortUrl longUrl clickNum commNum shareNum Lxwzyy www.xxx.com 12 34 45 ffffff www.ffff.com 22 13 23 eeeeee www.ssss.com 65 34 12 gggggg www.xxxx.com 32 1 3 Ssssss www.ggg.com 43 32 35 则url_20130519_count表中的数据应该如下所示:userId myCount clickNum commNum shareNum 406 2 55=(12+43) 66=(34+32) 90=(45+35)476 3 119=(22+65+32) 48=(13+34+1) 38=(23+12+3) MYSQL连接错误,求教! 初学mysql,买了个虚拟主机空间,用什么客户端管理最好呢? 触发器性能通常比较低???? 这样的sql如何写 APPSERV 如何禁止远程访问 phpMyAdmin 如何完全的复制sql数据库 windows200下怎样安装postpreSQL,多谢!!! 新手求指引 自己写了个php重置游戏内角色技能及天赋的功能,但是在PHP内无法执行,SQL语句在mysql里是有效的,求解! mysql 排序加索引的问题(where+order+limit) mysql的事务中怎么打印出异常信息 sql统计三位学生缺考的课程
Lxwzyy www.xxx.com 12 34 45
Ssssss www.ggg.com 43 32 35
select shortUrl,longUrl,
SUBSTRING_INDEX(countString23,',',1) as clickNum,
SUBSTRING_INDEX(SUBSTRING_INDEX(countString23,',',2),',',-1) as commNum,
SUBSTRING_INDEX(countString23,',',-1) as shareNum
from url_20130519_hour
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
url_20130519中存储所有userId名下的shortUrl的clickNum,commNum,shareNum总和。
myCount 字段表示每一个userId下有多少个shortUrl。例如main_info_01表的数据如下:
userId shortUrl firstTime udateTime
406 Lxwzyy
406 Ssssss
476 ffffff
476 eeeeee
476 gggggg
表url_20130519中的数据如下所示:
shortUrl longUrl clickNum commNum shareNum
Lxwzyy www.xxx.com 12 34 45
ffffff www.ffff.com 22 13 23
eeeeee www.ssss.com 65 34 12
gggggg www.xxxx.com 32 1 3
Ssssss www.ggg.com 43 32 35 则url_20130519_count表中的数据应该如下所示:
userId myCount clickNum commNum shareNum
406 2 55=(12+43) 66=(34+32) 90=(45+35)
476 3 119=(22+65+32) 48=(13+34+1) 38=(23+12+3)
这些select出来的字段怎样插入url_20130519表中呢?谢谢
select ....
不要贴图,直接贴文本, 另外insert into 语句贴哪儿了?
(
userId int unsigned not null,
shortUrl varchar(256) not null,
firstTime int unsigned default 0,
updateTime int unsigned default 0,
PRIMARY key(userId,shortUrl)
);create table IF NOT EXISTS url_20130519_hour
(
shortUrl varchar(256) PRIMARY key ,
longUrl text ,
countString23 varchar (256) default '0,0,0');create table IF NOT EXISTS url_20130519
(
shortUrl varchar(256) PRIMARY key ,
longUrl text ,
clickNum int unsigned default 0,
commNum int unsigned default 0,
shareNum int unsigned default 0
);create table IF NOT EXISTS url_20130519_count
(
userId int unsigned PRIMARY KEY ,
myCount int unsigned default 0,
clickNum int unsigned default 0,
commNum int unsigned default 0,
shareNum int unsigned default 0
);use wburl;insert into main_info_01 values (406,'dddddd',1368974450,1368974450),
(406,'wqwqqw',1368974499,1368974499),
(456,'jijiji',1368974674,1368974674),
(456,'klklkl',1368974700,1368974700),
(456,'njnjnj',1368974727,1368974727);insert into url_20130519_hour values('dddddd','www.xxx.com','12,34,32'),
('wqwqqw','www.dddd.com','56,12,43'),
('jijiji','www.sss.com','2,4,5'),
('klklkl','www.sss.com','3,32,12'),
('njnjnj','www.ff.com','34,4,3');
开始只有main_info_01和url_20130519_hour表中有原始数据。所以url_20130519表格中的数据是直接由url_20130519_hour中的数据生成的。生成算法的伪代码为:
For 每一条记录 in url_20130519_hour
Do
Select shortUlr, longUrl, countString23 这三个字段
将countString23 这个字符串字段按照“,”分割出三个量
至此得到shortUlr, longUrl,和三个整型量作为一条记录插入url_20130519表中
Done
按照以上插入的数据,url_20130519表格中数据应该为:
shortUrl longUrl clickNum commNum shareNum
dddddd www.xxx.com 12 34 32
wqwqqw www.dddd.com 56 12 43
jijiji www.sss.com 2 4 5
klklkl www.sss.com 3 32 12
njnjnj www.ff.com 34 4 3表url_20130519_count中的数据是根据main_info_01和url_20130519中的数据生成的。
所以为了得到表url_20130519_count,必须先得到url_20130519表中的数据。
具体例子在上面
不要贴图,直接贴文本, 另外insert into 语句贴哪儿了?将insert语句贴出拉了,第二个问题的例子请参见上文。谢谢啦
url_20130519_count这张表的数据是根据main_info_01和表url_20130519得到的。
url_20130519中存储所有userId名下的shortUrl的clickNum,commNum,shareNum总和。
myCount 字段表示每一个userId下有多少个shortUrl。例如main_info_01表的数据如下:
userId shortUrl firstTime udateTime
406 Lxwzyy
406 Ssssss
476 ffffff
476 eeeeee
476 gggggg
表url_20130519中的数据如下所示:
shortUrl longUrl clickNum commNum shareNum
Lxwzyy www.xxx.com 12 34 45
ffffff www.ffff.com 22 13 23
eeeeee www.ssss.com 65 34 12
gggggg www.xxxx.com 32 1 3
Ssssss www.ggg.com 43 32 35 则url_20130519_count表中的数据应该如下所示:
userId myCount clickNum commNum shareNum
406 2 55=(12+43) 66=(34+32) 90=(45+35)
476 3 119=(22+65+32) 48=(13+34+1) 38=(23+12+3)