栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MySQL排列

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL排列

每个附加项都可以包含在捆绑包中,也可以不在捆绑包中,从而成为二进制属性。
可视化组合的一种方法是为每个多余项创建一个单词,

1
表示多余项在列表中,
0
表示不是。
例如
Bench + undershelf + overshelf
为110(如果二进制字符串以相反的顺序读取,则为011)

生成n位的每个组合都会给n个额外的组合,也会给从

0
到的每个数字
2^n - 1

我们可以从这里开始工作:
1.生成从

0
到的数字列表
2^n - 1

2.将数字转换为二进制,以列出附加项的组合
。3.将每个位与附加项匹配
。4.在捆绑包说明中串联附加项的名称。

SELECt CONCAt(b.Name , COALESCE(CONCAt(' + '      , GROUP_CONCAt(x.Name SEPARATOR ' + '))          , '')) CombinationFROM   (SELECt p.Name, p.id          , LPAd(BIn(u.N + t.N * 10), e.Dim, '0') bitmap     FROM   Products p CROSS JOIN (SELECt 0 N UNIOn ALL SELECT 1    UNIOn ALL SELECT 2 UNIOn ALL SELECT 3 UNIOn ALL SELECT 4   UNIOn ALL SELECT 5 UNIOn ALL SELECT 6 UNIOn ALL SELECT 7   UNIOn ALL SELECT 8 UNIOn ALL SELECT 9) u CROSS JOIN (SELECT 0 N UNIOn ALL SELECT 1    UNIOn ALL SELECT 2 UNIOn ALL SELECT 3 UNIOn ALL SELECT 4   UNIOn ALL SELECT 5 UNIOn ALL SELECT 6 UNIOn ALL SELECT 7   UNIOn ALL SELECT 8 UNIOn ALL SELECT 9) t INNER JOIN (SELECT COUNT(1) Dim      , `Parent ID` pID  FROM Extra) **E** ON e.pID = p.ID     WHERe  u.N + t.N * 10 < Pow(2, e.Dim)       ) **B**       LEFT  JOIN (SELECt @rownum := @rownum + 1 ID  , `Parent ID` pID  , Name        FROM   Extra  , (Select @rownum := 0) r) **X**    ON x.pID = b.ID   AND SUBSTRINg(b.bitmap, x.ID, 1) = '1'GROUP BY b.Name, b.bitmap

此查询最多可以使用六个附加功能,然后需要另一个数字表(三个附加功能一个数字)。

怎么运行的

子查询

E
计算附加项的数量,用于
C
将数字表
u
t
(单位和十进制)生成的元素限制为2 ^ dim。

该数字将通过转换为二进制

BIn(u.N + t.N * 10)
,然后在元素数上保留“ 0”,从而生成一个组合位图。

要使用生成的位图,每个附加项都需要一个伪造的ID,该ID将与其中的位置匹配,这就是子查询

X
的目的。

这两个子查询

JOIN
由位图的第n个char进行编辑:如果char为1,则捆绑包中包含多余的字符,将其合并
LEFT
以不松散没有多余的产品。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/670331.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号