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

是否存在通过匹配多个条件进行排序的SQL技术?

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

是否存在通过匹配多个条件进行排序的SQL技术?

如果我正确理解,看来您可以在

ORDER BY
,中使用表达式,类似于对以下帖子给出的可接受答案:

  • 使用MySql,我可以对一列进行排序,但最后有0位吗?

因此,您的查询可能如下所示:

SELECt    imageIDFROM      ...JOIN      ...WHERe     designID = 100          ORDER BY  garmentID = 1 DESC,          colorID = 5 DESC,          sizeID = 10 DESC;

需要注意的是

garmentID
colorID
sizeID
不作为的过滤器
WHERe
子句。这些值仅在
ORDER BY
表达式中使用。

测试用例:

CREATE TABLE designs (designID int, garmentID int, colorID int, sizeID int);INSERT INTO designs VALUES (100, 1, 1, 1);INSERT INTO designs VALUES (100, 1, 2, 2);INSERT INTO designs VALUES (100, 1, 5, 3);INSERT INTO designs VALUES (100, 1, 5, 10);INSERT INTO designs VALUES (100, 1, 5, 15);INSERT INTO designs VALUES (100, 1, 8, 20);INSERT INTO designs VALUES (100, 2, 5, 10);INSERT INTO designs VALUES (100, 2, 6, 15);INSERT INTO designs VALUES (101, 1, 1, 1);INSERT INTO designs VALUES (101, 2, 1, 1);

结果:

SELECt    * FROM      designs WHERe     designID = 100 ORDER BY  garmentID = 1 DESC,colorID = 5 DESC,sizeID = 10 DESC;+----------+-----------+---------+--------+| designID | garmentID | colorID | sizeID |+----------+-----------+---------+--------+|      100 |         1 |       5 |     10 ||      100 |         1 |       5 |      3 ||      100 |         1 |       5 |     15 ||      100 |         1 |       1 |      1 ||      100 |         1 |       2 |      2 ||      100 |         1 |       8 |     20 ||      100 |         2 |       5 |     10 ||      100 |         2 |       6 |     15 |+----------+-----------+---------+--------+8 rows in set (0.02 sec)

请注意,该行如何与指定的匹配

garmentID
colorID
并且
sizeID
是第一个。如果失败,则匹配的行
garmentID
colorID
下一个行。然后,仅匹配的行
garmentID
随之出现。然后剩下的,只匹配子句的
designID
过滤器
WHERe

我相信在SQL中值得这样做。正如@Toby在另一个答案中指出的那样,一般来说,在对这么少的行进行排序时,您无需担心性能,只要假设您始终按

designID
…进行过滤…至于其他问题,我不知道如果有这样的查询的名称-
我倾向于称其为“按表达式排序”。



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

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

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