mysql多个字段关联查询

mysql多个字段关联查询,第1张

数据结构设置的不太合理,查询效率会比较低,假设表名分别是images和products

请参考下列语句:

select a.thumbnailId,

(select path from images where id=a.thumbnailId)

as thumbnailPath,t. imageId,

t.imagePath from products a

left join

(select b.imageId,group_concat(c.path) as imagePath

from products b,images c

where b.imageId like concat('%',c.id,'%') group by b.imageId) t

on a.imageId=t.imageId

实际测试如下:

测试代码

images源数据

products源数据

输出效果

说明:图片ID要统一ID位数(如试验中全部统一为4位图片ID),输出才准确

varchar是变长字段,会根据你存储的数据长度来决定占用的存储空间,但是会有一个结束符,也就是说你varchar(200)你最多可以存200个字符,但实际占用了201个空间,对于不确定字段来说用varchar要远优于char型,但是对于定长字段,比如一个字段每组数据都应该有20位,此时用char来定义比较好,不会有varchar那个多余占用的空间。

另外虽然varchar是变长字段可以节省空间,但因为是变长,所以也会为以后可能出现的更新等 *** 作儿而预留一定的空间

所以varchar(200)和varchar(256)相比,实际存储数据的空间其实没什么差别,但是后面那个可能会稍微多预留些空间吧应该是

谈一点个人的看法:

从库结构设计来看,通常来说,两个库相关联的字段是以唯一值为基础的,可能是一对多的关系,但通常是用的 ID 来做。比如:news 的 newstype 用 newstype_ID 与 newstype 库的 ID 相关联。

建议可以参考一下其他数据库的设计,比如:Discuz 论坛中的库结构。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存