sql - 是否可以在单个查询中同时使用 order by 和 where

标签 sql mysql caching

我已经创建了一个表。在一个字段中,我有该记录的优先级(在 1-9 之间)。 我没有为所有记录设置优先级,所以对于某些记录,它将保持为空。

当在我的 HTML 页面中显示这些记录时,我只是检查那些优先级——如果优先级存在,那么我将按原样显示,如果它为空,那么我将把它显示为最低优先级 '10' (仅供展示)。

排序表格时出现问题。如果我尝试对表进行排序(DESC),它会在第一行显示 10,然后继续完美地显示 (1,2,....)。

如何解决?

是否可以先显示优先级,然后再显示空值?

最佳答案

这是一个简短的示例,展示了如何将 NULL 转换为一个值,然后对其进行排序。

create table test
(
    priority int null,
    detail varchar(10)
)

insert into test values (1, 'one')
insert into test values (3, 'three')
insert into test values (8, 'eight')
insert into test values (9, 'nine')
insert into test values (null, 'ten')

select ISNULL(priority, 10), detail from test order by ISNULL(priority, 10)

关键是 ISNULL'ing 可空值字段以将 NULL 转换为您想要的值 (10)。

关于sql - 是否可以在单个查询中同时使用 order by 和 where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1141890/

相关文章:

php - 如果两个表不共同,则连接会删除变量

mysql - 使用 IN 运算符进行 JOIN 查询

基于指定表列的 SQL 外键

caching - MATLAB:从函数内加载

java - Guava 缓存 - 如何在任何未命中时加载所有内容?

caching - varnish 可以用作代理来缓存和服务第三方资源吗?

sql - 使用 MySQL 的 'KEY' 的重复条目 'PRIMARY'

mysql - 在预订系统中删除 "expired"预订的最佳方法

php - Codeigniter 多数据库连接中遇到错误

php - 子查询的 PDO 插入错误 (SQLSTATE[23000] : Integrity constraint violation: 1452)