高分悬赏 mysql多表查询,并统计的问题
这个很简单,你可以先用GET获取URL中KEYWORD的值,获得了之后进行第一次MYSQL查询,当用户在返回的结果中再次点击后即可再次查询.
同时也可以用链表查询来解决,即MYSQL中的多对多查询.
这个你可以去查询下相关例子,我就不在这细说了.
QQ:408668252
如果找不到那找:xox9002@126.com
打开两个Excel文档。数据都在里面的Sheet1,第一行是表头,数据都从第二行起。
身份证没有重复的,就以身份证作为匹配条件。假设,身份证都在B列。
在《高考》工作簿里面的Sheet1C2输入
=IF(COUNTIF('[会考.xls]Sheet1'!B:B,B2)>0,"参加","")
回车并向下填充。
如果还要列姓名(A列)作为匹配条件也行。公式改为:
=IF(SUMPRODUCT(('[会考.xls]Sheet1'!A$2:A$14771=A2)*('[会考.xls]Sheet1'!B$2:B$14771=B2))>0,"参加","")
如果是2007及其以上版本,公式可以简化:
=IF(COUNTIFS('[会考.xls]Sheet1'!A:A,A2,'[会考.xls]Sheet1'!B:B,B2)>0,"参加","")
本期我们用 MySQL 提供的 DBUG 工具来研究 MySQL 的 SQL 处理流程。
起手先造个实例
这里得稍微改一下实例的启动文件 start,将 CUSTOM_MYSQLD 改为 mysqld-debug:
重启一下实例,加上 debug 参数:
我们来做一两个实验,说明 DBUG 包的作用:
先设置一个简单的调试规则,我们设置了两个调试选项:
d:开启各个调试点的输出
O,/tmp/mysqld.trace:将调试结果输出到指定文件
请点击输入图片描述
然后我们创建了一张表,来看一下调试的输出结果:
请点击输入图片描述
可以看到 create table 的过程中,MySQL 的一些细节操作,比如分配内存 alloc_root 等
这样看还不够直观,我们增加一些信息:
请点击输入图片描述
来看看效果:
请点击输入图片描述
可以看到输出变成了调用树的形式,现在就可以分辨出 alloc_root 分配的内存,是为了解析 SQL 时用的(mysql_parse)
我们再增加一些有用的信息:
请点击输入图片描述
可以看到结果中增加了文件名和行号:
请点击输入图片描述
现在我们可以在输出中找一下统计表相关的信息:
请点击输入图片描述
可以看到 MySQL 在这里非常机智,直接执行了一个内置的存储过程来更新统计表。
沿着 que_eval_sql,可以找到其他类似的统计表,比如下面这些:
请点击输入图片描述
请点击输入图片描述
本次实验中,我们借助了 MySQL 的 DBUG 包,来让 MySQL 将处理过程暴露出来。MySQL 中类似的技术还有不少,比如 performance_schema,OPTIMIZER_TRACE 等等。
这些技术将 MySQL 的不同方向的信息暴露出来,方便大家理解其中机制。
select nameid,name,COUNT(*) namecount from (
select a.nameid,a.name,LOCATE(concat(',',a.name,','), concat(',',b.name,',')) from table1 a ,table2 b where LOCATE(concat(',',a.name,','), concat(',',b.name,','))>0
) t group by nameid, name order by nameid
表结构不合理,使用SQL查询效率不高;
解决办法有多种,介绍两种:
第1种 :修改表2的结构
1 张三 1
2 李四 1
3 王二 1
4 王二 2
5 赵五 2
6 张三 3
7 王二 3
查询Sql: select nameid ,name, count(*) from table2 a left join table 1 b on a.name = b.name group by a.nameid
第2种 : 数据量较多修改数据结构复杂时使用
把数据库数据遍历一遍,生成log文件
第3种: 使用其它搜索引擎,如coreseek
------------第2种方法具体内容----------------------
表结构固定的情况下:
只能扫描table2,把数据一行一行搞出来了;
function getdata($i){
$sql = "select id ,name from table2 where id =".$i;
/*mysql_connect();
mysql_query();
$row = mysql_fetch_array();
此部他请参考手册补全
*/
return $row;
}
$formatRet = array();
for($i = 1; $i< 1000; $i++){ //将1000改成你数据库中最大的ID
$row = getdata($i);
$nameArr = explode(',', $row['name']);
foreach($nameArr as $key => $v) {
$formatRet[$v]++;
}
}
asort($formatRet);
foreach($formatRet as $k => $val) {
echo "\r\n".$k." :".$val;
}
试下这样吧
select nameid, name, (select count(1) from table2 t2 where t2. name like '%' || t1.name || '%') as namecount from table1 t1
乜傅施捷: $Model = new Model() // 实例化一个model对象 没有对应任何数据表$Model->query("select * from think_user where status=1");
都昌县19829218443: sql 查询2个关联表并求和 解决追加悬赏 - ?
乜傅施捷: select 字段1,字段2,字段3,字段5,字段6 from 表1 join on 字段1=字段4 小计和总计有什么不同
都昌县19829218443: MYSQL数据库+PHP,多重条件搜索的方法,高手解答一下.高分悬赏. - ?
乜傅施捷: 这个很简单,你可以先用GET获取URL中KEYWORD的值,获得了之后进行第一次MYSQL查询,当用户在返回的结果中再次点击后即可再次查询.同时也可以用链表查询来解决,即MYSQL中的多对多查询.这个你可以去查询下相关例子,我就不在这细说了.QQ:408668252 如果找不到那找:xox9002@126.com
都昌县19829218443: 高分悬赏,sql查询语句?
乜傅施捷: 就是查询日期最大的那组数据就对了,这是一个很简单的查询~ select A.* from 表 A,(select 字段1,max(字段3) as 字段3 from 表 group by 字段1)B where A.字段1=B.字段1 and A.字段3=B.字段3
都昌县19829218443: 高分悬赏!LOOKUP INDEX MATCH 怎样进行多条件查找?求具体公式 - ?
乜傅施捷: J4公式下拉:=IF(I4="","",INDEX(A:F,MATCH(H4,A:A,),MATCH(LOOKUP(I4,--LEFT(B$4:F$4,FIND("-",B$4:F$4)-1),B$4:F$4),$4:$4,))) 或者用这公式也行:=IF(I4="","",OFFSET(A$1,MATCH(H4,A:A,)-1,MATCH(LOOKUP(I4,--LEFT(B$4:F$4,FIND("-",B$4:F$4)-1),B$4:F$4),$4:$4,)-1))
都昌县19829218443: EXCEL区域查找符合条件的值并输出(高分悬赏) - ?
乜傅施捷: 在g1输入:=INDEX(A:A,SMALL(IF(ISNUMBER(FIND($F$1,$B$1:$B$65536)),ROW($B$1:$B$65536),4^8),ROW(A1)))&"" 数组公式,同时按下ctrl+shift+enter 三键 公式下拉到g25
都昌县19829218443: Sql语句高级查询,高分悬赏 - ?
乜傅施捷: select id,title,(select StyleName from NewsStyle where News.StyleId=NewsStyle.StyleId) as StyleName,(select TypeName from NewsType where News.TypeId=NewsType.TypeId) as TypeName from News
都昌县19829218443: 高分悬赏求助~解决这个SQL查询语句!300分送上?
乜傅施捷: SELECT * FROM USER WHERE 1=1 -- 这是基本条件匹配AND A.SEX BETWEEN MixAge AND MaxAge AND A. Area = Area AND isPhoto = 1 --下面是兴趣爱好匹配 AND ID IN ( SELECT UID FROM INTEREST WHERE Interest IN --寻找用户ID 但是他们的兴趣必须在我的兴趣之中找 (SELECT Interest FROM INTEREST WHERE UID = A.ID -- 获得自己的所有兴趣爱好 ) ) --最后去掉自己 AND ID != A.ID 不懂再问
都昌县19829218443: 数据库,问题,三个表要建立,代码给我,高分悬赏.?
乜傅施捷: 1. 查询全体学生的学号和姓名. Select Sno,Sname From Student 2. 查询全体学生的学号和姓名. Select Sno,Sname From Student 3. 查询全体学生的姓名、学号、所在系. Select Sname,Sno,Sdept From Student 4. 查询全体学生的姓名及其出...
都昌县19829218443: 高分悬赏一条SQL嵌套查询语句 - ?
乜傅施捷: select top 13 * from news where 一级分类列名="热点新闻" and 二级分类列名<>"军事新闻" order by "创建记录时间" desc这样就可以了.