添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

根据业务需要,需要使用如下的命令进行多表联查

select a.id as a_id, b.id as b_id, b.protocol as protocol, b.priority as priority
 from (a, b) left join c on (a.network_id = c.network_id) where (a.id = b.acl_id 
 and c.network_id = 'dec4f9c4-f562-451d-8edf-fce4284b7fa1')
+--------------------------------------+--------------------------------------+----------+----------+
| 06b93477-4ca7-41c8-86f7-0ade65e11b8c | 47844358-0828-4f8d-a9c5-0a21bb1e1e86 | udp      |       50 |
| 06b93477-4ca7-41c8-86f7-0ade65e11b8c | 47844358-0828-4f8d-a9c5-0a21bb1e1e86 | udp      |       50 |
| 06b93477-4ca7-41c8-86f7-0ade65e11b8c | 9da262cc-48df-4cab-9a70-10f84e190c82 | tcp      |       12 |
| 06b93477-4ca7-41c8-86f7-0ade65e11b8c | 9da262cc-48df-4cab-9a70-10f84e190c82 | tcp      |       12 |
| 06b93477-4ca7-41c8-86f7-0ade65e11b8c | eb5d478e-e838-4d6d-98b5-f7f49b2d2634 | ip       |       17 |
| 06b93477-4ca7-41c8-86f7-0ade65e11b8c | eb5d478e-e838-4d6d-98b5-f7f49b2d2634 | ip       |       17 |
+--------------------------------------+--------------------------------------+----------+----------+

发现结果很多重复项

2 解决方法

当时直接想到的是加DISTINCT进行去重,效果确实能够达到且立竿见影,除此之外,也可以在语句末尾添加group by b_id来实现同样的效果。
但是不能只知其然,后来发现,是自己join的c表没有关联主键或者说是value唯一性的字段。
通过对该表以该字段查询后发现确实存在两行数据,换言之,如果在c表中查询该字段对应的数据后
SELECT * FROM c WHERE c.network_id = '123456789';
结果显示数据有n行,那么根据笛卡尔积,left join 将会产生m * n条数据,会重复n倍。

使用多表联查时尽量关联到主键上或者具有唯一约束的字段上,或者可以习惯性的加上DISTINCT来进行查询结果的去重。

1 背景根据业务需要,需要使用如下的命令进行多表联查select a.id as a_id, b.id as b_id, b.protocol as protocol, b.priority as priority from (a, b) left join c on (a.network_id = c.network_id) where (a.id = b.acl_id and c.network_id = 'dec4f9c4-f562-451d-8edf-fce4284b7fa1')结果如 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) select * from testtable where numeber in (select number from people group by number having count(number) > 1 ) 可以查出testtabl
INSERT INTO hk_test(username, passwd) VALUES ('qmf1', 'qmf1'),('qmf2', 'qmf11') delete from hk_test where username='qmf1' and passwd='qmf1' MySQL查询表里的重复数据记录: 先查看重复的原始数据: 场景一:列出username字段有重读的数据 select username,count(*) as count from hk_test group by username having count>1; SELECT username,count
(整理不易,参考使用,记得点赞) 今天在写多表关联查询sql语句时,出现查询出的记录有重复的现象,尽管更改了内联,左右外连接,还是会出现重复的记录,查询出的结果就像下面这样: 下面是我原来的sql语句: SELECT * FROM `students` a left join clazz b on a.stuclazz = b.cid inner join clazztime c on b...
中等难度笔试题,包括select / insert / update / delete 语法应用 多表联合查询,排序、分组等功能运用 包括但不限于MySQL,也可推广至Oracle、DB2等常见关系型数据库 考验的包括基本的CRUD水平,以及边界情况的判断处理
最常见的外连接发现重复数据的原因大多数是因为,两个表之间不是一对一关联,而是多对多,或者是一对多关联;这样查询连接的表越来越多的时候就会出现数据重复的情况 这种情况最好的解决方式便是找到产生重复数据的关联位置,将那个表的关联方式以及逻辑,尽可能的改成子查询,将无用的信息和混淆的信息尽可能的过滤,或者把条件从主查询放到子查询里面来缩小过滤重复数据; 例如:把where条件里面写上子查询 或者是在from里面写上子查询,让关联查询的表数据只关联我们需要的,或者关联不重复的数据。 我们先创建三个表,之后的查询均以这三个表为例 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NbltapwW-1601602301029)(en-resource://database/1787:1)] 根据如图所示的字段及属性建立三张表,建立过程省略。注意sno,cno,在每张表中的格式要一致,就是我们所说的学号和课程号是固定的,一个学生只能有一个学号,一个课程只能有一个课程号。 插入后的数据格式如下(可以自行改变): course: score表: stude
MySQL多表联查可以使用JOIN关键字来实现。JOIN关键字包含多种类型,如INNER JOIN、LEFT JOIN、RIGHT JOIN等,这些类型都是用来描述关联方式的,下面以INNER JOIN为例: SELECT * FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id; 上述查询语句中,Table1和Table2是需要关联数据的两张表,ON后面的语句是关联条件,Table1.id = Table2.id表示根据id字段关联两张表。INNER JOIN表示使用内连接,只会返回两张表中有关联数据的行。如果需要返回所有数据,可以使用LEFT JOIN、RIGHT JOIN或FULL OUTER JOIN等其他类型的关联方式。 除了JOIN关键字,MySQL中还提供了子查询、UNION、INTERSECT和EXCEPT等多种方式实现多表联查。需要根据具体情境选择最合适的方式来实现。
pvcreate /dev/sdb WARNING: Running as a non-root user. Functionality may be unavailable. /run/lock/lvm/P_global:aux: open failed: 权限不够
笔记本连接RK61键机械键盘非损坏的win和alt对调,数字键失灵以及特殊字母键失灵恢复 xiaobaicai_liu: 注册表的那个方法我也尝试了,就是不生效,奇了怪了 rabbitmq集群搭建报错:[error] Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner only git revert以及revert的恢复