php – 是否有通过匹配多个条件进行排序的SQL技术?
我有几个表连接在一起形成一个包含列的表
我有一个看起来像这样的函数[方括号中的变量是可选的]:
我希望它按以下顺序返回所有匹配$designID的imageID: >首先匹配$garmentID,$colorID和$sizeID的行 我只需加载与$designID匹配的所有行,然后在PHP中对它们进行排序,就可以很容易地做到这一点,但我的理解是,在可能的情况下,在MySQL中进行排序通常会更快.将有大约20行匹配给定的$designID. 所以我的问题是双重的:是否值得在SQL语句中进行排序?如果我这样做,最好的方法是什么? 我也很想知道这种排序是否有名称. 最佳答案 如果我理解正确,看起来您可以在ORDER BY中使用表达式,其方式类似于给出以下Stack Overflow帖子的接受答案:> Using MySql,can I sort a column but have 0 come last? 因此,您的查询可能如下所示:
请注意,在WHERE子句中,衣服ID,colorID和sizeID不用作过滤器.这些值仅用于ORDER BY表达式. 测试用例:
结果:
请注意与指定的衣服ID,colorID和sizeID匹配的行是如何排在第一位的.如果做不到这一点,接下来是匹配garmentID和colorID的行.然后是仅匹配garmentID的行.然后是其余的,它只匹配WHERE子句的designID过滤器. 我相信在SQL中这样做是值得的.作为@Toby noted in the other answer,一般来说,排序这么少的行时你不需要担心性能,假设你总是按照designID进行过滤…至于你的其他问题,我不知道是否有名字对于这样的查询 – 我倾向于称之为“通过表达式排序”. (编辑:4S站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- mysql – SELECT … FOR UPDATE来自多个线程中的一个表
- c# – 身份实体框架库 – 更新数据库[MySQL]
- php – 使用应用程序代码强制执行NOT NULL是错误的吗?
- Want to archive tables? Use Percona Toolkit’s pt-archi
- mysql – @GeneratedValue不起作用. “java.sql.SQLExcepti
- mysql – 如何从另一个表设置AUTO_INCREMENT
- java中的“表名模式不能为NULL或为空”
- php – 巨大的列表中的类似名称
- python – Sqlalchemy类型为文章的非常长的文本
- SQLyog 使用介绍