问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql的inner join问题

发布网友 发布时间:2022-04-13 02:03

我来回答

2个回答

懂视网 时间:2022-04-13 06:24

今天撸代码时,遇到SQL问题:

(相关mysql视频教程推荐:《mysql教程》)

要将A表查询的ID,匹配B表的ID,并将B表全部内容查询出来:

未优化前:

MySQL [xxuer]> SELECT 
 -> COUNT(*)
 -> FROM
 -> t_cmdb_app_version
 -> WHERE
 -> id IN (SELECT 
 ->  pid
 ->  FROM
 ->  t_cmdb_app_relation UNION SELECT 
 ->  rp_id
 ->  FROM
 ->  t_cmdb_app_relation);
+----------+
| COUNT(*) |
+----------+
| 266 |
+----------+
1 row in set (0.21 sec)

优化后:

MySQL [xxuer]> SELECT 
 -> count(*)
 -> FROM
 -> t_cmdb_app_version a
 ->  INNER JOIN
 -> (SELECT 
 ->  pid
 -> FROM
 ->  t_cmdb_app_relation UNION SELECT 
 ->  rp_id
 -> FROM
 ->  t_cmdb_app_relation) b ON a.id = b.pid;
+----------+
| count(*) |
+----------+
| 266 |
+----------+
1 row in set (0.00 sec)

查看执行计划对比:

MySQL [xxuer]> explain SELECT 
 -> COUNT(*)
 -> FROM
 -> t_cmdb_app_version
 -> WHERE
 -> id IN (SELECT 
 ->  pid
 ->  FROM
 ->  t_cmdb_app_relation UNION SELECT 
 ->  rp_id
 ->  FROM
 ->  t_cmdb_app_relation);
+----+--------------------+---------------------+-------+---------------+---------+---------+------+------+--------------------------+
| id | select_type | table  | type | possible_keys | key | key_len | ref | rows | Extra   |
+----+--------------------+---------------------+-------+---------------+---------+---------+------+------+--------------------------+
| 1 | PRIMARY  | t_cmdb_app_version | index | NULL  | PRIMARY | 4 | NULL | 659 | Using where; Using index |
| 2 | DEPENDENT SUBQUERY | t_cmdb_app_relation | ALL | NULL  | NULL | NULL | NULL | 383 | Using where  |
| 3 | DEPENDENT UNION | t_cmdb_app_relation | ALL | NULL  | NULL | NULL | NULL | 383 | Using where  |
| NULL | UNION RESULT | <union2,3>  | ALL | NULL  | NULL | NULL | NULL | NULL | Using temporary  |
+----+--------------------+---------------------+-------+---------------+---------+---------+------+------+--------------------------+
4 rows in set (0.00 sec)
MySQL [xxuer]> explain SELECT 
 -> count(*)
 -> FROM
 -> t_cmdb_app_version a
 ->  INNER JOIN
 -> (SELECT 
 ->  pid
 -> FROM
 ->  t_cmdb_app_relation UNION SELECT 
 ->  rp_id
 -> FROM
 ->  t_cmdb_app_relation) b ON a.id = b.pid;
+----+--------------+---------------------+--------+---------------+---------+---------+-------+------+--------------------------+
| id | select_type | table  | type | possible_keys | key | key_len | ref | rows | Extra   |
+----+--------------+---------------------+--------+---------------+---------+---------+-------+------+--------------------------+
| 1 | PRIMARY | <derived2>  | ALL | NULL  | NULL | NULL | NULL | 766 | Using where  |
| 1 | PRIMARY | a   | eq_ref | PRIMARY | PRIMARY | 4 | b.pid | 1 | Using where; Using index |
| 2 | DERIVED | t_cmdb_app_relation | ALL | NULL  | NULL | NULL | NULL | 383 | NULL   |
| 3 | UNION | t_cmdb_app_relation | ALL | NULL  | NULL | NULL | NULL | 383 | NULL   |
| NULL | UNION RESULT | <union2,3>  | ALL | NULL  | NULL | NULL | NULL | NULL | Using temporary  |
+----+--------------+---------------------+--------+---------------+---------+---------+-------+------+--------------------------+
5 rows in set (0.00 sec)

热心网友 时间:2022-04-13 03:32

最好把你的查询结果贴出来,可以帮助判断。建议先把90用单引号括起来,如'90'。追问

哦,查到了,原来它在2张表的值不一样,

追答你的问题解决了?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
立秋后钓鱼什么风向好-立秋钓鱼风向怎么选 赱乂砉込儬 怎么读 "赱"读什么? 解决电脑无法搜索到iPhone热点的问题如何修复iPhone热点无法在电脑上显... 电脑搜不到iphone12热点 iphone开热点给电脑搜不到 国企的地产有哪些 国企下设公司是什么意思? 红加蓝加绿是什么色. 梦幻西游75级开三倍抓鬼一轮有多少经验 孕期总是失眠,对宝宝有影响吗 孕后期总是失眠睡不着,孕妇熬夜对胎儿有影响吗? 孕妇睡眠不好会对胎儿有影响吗? 孕妇在孕期睡好觉很重要,睡不好对胎儿有影响吗? 孕早期每天都吐,没胃口,晚上失眠,这对宝宝发育有影响吗? 孕妇白天睡觉晚上失眠,对胎儿的作息时间有哪些影响? 怀孕后怎么睡都不舒服,睡眠不好会不会影响胎儿发育? 怀孕期间白天睡不醒,晚上睡不着,这会对胎儿造成影响吗? mysql left join 怎么优化 哪位大侠知道&quot;唐诗与六朝诗歌的关系(相同点与不同点)&quot; 简述秦、汉、唐、宋、明、清 六朝所设立的中央行政机构。 求六朝云清羽全本~六朝系列有的全都可以给我 谢谢啦~ 六朝最为繁荣的盛世——元嘉之治,到底是什么水平呢? 汉魏六朝是什么意思 六朝系列的主角有没有被ntr啊,哪位大大来个高能预警呗 紫狂的书在哪能下 买了乐视超级电视F55,用了几天还不错,请教一下怎么看奇艺的内容? 乐视超级电视哪款比较好?F55还值得买吗? 乐视超级电视F55是全面屏的吗?它和G55有什么区别吗? 看中乐视F55和G55这两款全面屏电视哪个好些?有什么区别吗? 地瓜梗咋晒干 mysql中in和left join哪个更好 我的电脑 DELL INSPIRON 1464 的安全中心打不开了怎么? 秘书的书拼音是几声调 书的声调是第几声调? 书桌的&quot;书&quot;字是几声 书的音节是几声 书籍的籍是几声 一本书的“一”读几声 有人能教下平上去入四声到底是如何区分吗 读万卷书的&quot;卷&quot;是读第三声还是第四声? 古代四声是什么? 读好书,好读书,读好书.第二个好字读几声 能耐普通话书中音调几声 &lt;瞿&gt;.字怎么读书?第几声? 黄瓜应该什么时候吃 有没有手机配件交易或购买的网站 TSI粒子计数器如何检漏送风高效过滤器 mysql not in 查询语句转成left join on格式 为什么我同一身份名下的两个 一个零钱支付限额了另一个却没有?