mysql 左连接多个表,其中两个表数据为空,导致不能用到索引

mysql 左连接多个表,其中两个表数据为空,导致不能用到索引,第1张

这种数据有意义吗?这种要从应用程序出发,写一个完整的数据处理过程,把数据取到内存,然后分析内存存储的数据,再返回。还有你数据采集方法就有问题,在做数据的时候怎么允许这么多的连接,我们在 *** 作数据的时候就做到表与表之间的关系紧密相连,把数据连接变换为数据更新。比如我像数据库插入A表ID、配置与单号、数量,那么与此同时我在另一个关联的表里面就更新了单号和数量。 *** 作过程用存储过程实现。这种 *** 作就为数据库逻辑性建立了基础,为后来的数据使用节约了查询时机。又比如说我们做ERP软件,在我们做一个表单提交动作的时候,我就已经插入了新的单据记录、更新了日志、更新了库存或者其他的状态、更新了BOM。最后我去查询某个表的时候实际上我们就是单纯的查询一个表,这样我们就为客户节约了查询时机。我不知道你同意我的做法不,反正这种查询你没做错,但是确切一点你的数据关系和整个数据库耦合性太差,造成你查询慢,而且我也看得明白你是要一个表一个表的去汇总,然后连接查询,汇总的时候就启用了group by机制,在做大量的排列进出栈工作。

error:1054 ???应该会明确告诉你那个字段什么的不存在吧,你检查一下?

为什么要用子查询呢,写一层sql查询就可以了啊。

select d.*,ds.stages_id, ds.mosters_id, dsm.monsters_id, dsm.moster_id, dsm.pos

from dungeon_info as d LEFT JOIN dungeon_stage_info as ds on d.dungeon_id = ds.dungeon_id

 LEFT JOIN

 dungeon_stage_moster_info as dsm on ds.monsters_id = dsm.monsters_id

inner join left join

这是多表查询的名词。 比如两个表A,B ,其中A表内有ID列,B表有aID,使用A inner join B on A.ID=B.aID产生的结果是:只有满足A 的ID和B的aID 相等的值才显示出来,并且每个单元格的值(ID,aID)不可能有空的。而left join 产生的结果是:以A表ID为标准,查找ID=aID 的结果,如果B的aID不存在与之对应的值,则新结果的aID这个单元格是空的。

A ID B aID | innerjoin: ID aID| left join ID aID | right join: IDaID

1 1 |11 | 11 | 1 1

2 2 |22 | 22 | 2 2

3 4 | | 3 |4


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7262388.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存