0 0

sql server中这样的sql语句什么意思?5

数据库:sql server 2005
表名:test_liu
表结构:test_liu(id(int),name(varchar),category(varchar))
表中的数据:见附件图片
有没有知道,下面这条sql是什么意思?结果到底是按照什么排序的?
select * from test_liu order by case test_liu.category when 'fruit' then 'vegetable' else 'fruit' end;

哪位能给指点指点,先谢过了!


问题补充:
robertliudeqiang 写道
这道是考试题? 感觉有故意把人搞晕的味道

order by case 语句可以对某一字段分类进行排序,比如,在这里例子里,对于category字段安装类别的不同分别进行排序。

但是你提供的语句有点复杂,容易把人搞晕,可以写成:

SELECT * 
FROM test_liu 
ORDER BY CASE category
WHEN 'fruit'
THEN 2 
ELSE 1 
END


效果是一样的,原因是vegetable的首字母v比fruite的f大,他们之间只需要比较大小就行了。

所以,这个语句的意思就是,根据category字段的不同值分别排序,值小的排在前面(某人升序),如果想降序,可以写成

SELECT * 
FROM test_liu 
ORDER BY CASE category
WHEN 'fruit'
THEN 2 
ELSE 1 
END desc



谢谢你的回复,执行了一下这条sql:SELECT *   
FROM test_liu   
ORDER BY CASE category  
WHEN 'fruit' 
THEN 2   
ELSE 1   
END;
发现结果确实和执行以上sql相同,结果都是:
id  name       category
3   cabage     vegetable
4   radish     vegetable
6   tomato     both
1   apple      fruit
2   banana     fruit
5   watermelon fruit
可令人难以理解的是,为什么category为‘both’的tomato会排在‘vegetable’和‘fruit’中间呢?另外,对于category同是'fruit'的记录,又是按照什么排序的,按照id吗?
2010年2月25日 10:26
  • 大小: 12 KB

2个答案 按时间排序 按投票排序

0 0

采纳的答案

引用
可令人难以理解的是,为什么category为‘both’的tomato会排在‘vegetable’和‘fruit’中间呢?另外,对于category同是'fruit'的记录,又是按照什么排序的,按照id吗?


1 为什么category为‘both’的tomato会排在‘vegetable’和‘fruit’中间呢?
按照表达式,category为‘both’和‘vegetable’时值是相同的,此时该类显示是按照记录出现的顺序出现的。所以id出现的顺序是3,4,6.

2 对于category同是'fruit'的记录,又是按照什么排序的,按照id吗?
和上面一样,按记录出现的顺序,在你提供的表里,就是按照id。

2010年2月27日 10:31
0 0

这道是考试题? 感觉有故意把人搞晕的味道

order by case 语句可以对某一字段分类进行排序,比如,在这里例子里,对于category字段安装类别的不同分别进行排序。

但是你提供的语句有点复杂,容易把人搞晕,可以写成:

SELECT * 
FROM test_liu 
ORDER BY CASE category
WHEN 'fruit'
THEN 2 
ELSE 1 
END


效果是一样的,原因是vegetable的首字母v比fruite的f大,他们之间只需要比较大小就行了。

所以,这个语句的意思就是,根据category字段的不同值分别排序,值小的排在前面(某人升序),如果想降序,可以写成

SELECT * 
FROM test_liu 
ORDER BY CASE category
WHEN 'fruit'
THEN 2 
ELSE 1 
END desc


2010年2月25日 11:48

相关推荐

    sqlserver自动生成sql语句工具sqlserver转oracle

    首先,标题中的"sqlserver自动生成sql语句工具"指的是可以分析SQL Server数据库结构和数据,自动生成对应的SQL创建语句的软件。这种工具通常能帮助数据库管理员快速获取数据库的定义,便于备份、迁移或在其他环境中...

    SQL语句实现跨Sql server数据库操作实例

    ### SQL语句实现跨SQL Server数据库操作实例 #### 背景介绍 在日常的数据库管理与开发工作中,经常会遇到需要在不同的SQL Server实例之间进行数据交换的情况。这些操作包括但不限于查询不同数据库中的数据、将数据...

    非常好用的SQL Server 抓取SQL语句工具HOOK

    非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK 非常好用的SQL Server 抓取SQL语句工具HOOK

    Sql Server ExpressProfiler 监视Sql语句

    它允许数据库管理员和开发人员实时跟踪和记录数据库服务器上的事件,包括SQL语句的执行情况,以优化性能、查找问题或调试应用程序。在公司环境中,由于未安装官方的Profiler,你可能已经下载了第三方的...

    SQL Server2005基本方法和语句

    ### SQL Server 2005 基本方法...以上介绍了 SQL Server 2005 中的基本方法与常用语句,涵盖了数据库管理与数据操作的核心技能。通过熟练掌握这些知识,可以有效地管理和维护数据库系统,提高数据处理的效率与准确性。

    SQL Server中存储过程比直接运行SQL语句慢的原因

    SQL Server 中存储过程比直接运行 SQL 语句慢的原因 在 SQL Server 中,存储过程比直接运行 SQL 语句慢的原因是 Parameter sniffing 问题。Parameter sniffing 是指 SQL Server 在执行存储过程时,使用参数的统计...

    SqlServer删除所有表数据语句

    下面我们将介绍如何使用一条 Sql Server 语句删除当前数据库中所有表的数据。 删除所有表数据 删除所有表数据的语句使用了存储过程来实现。首先,我们需要创建一个存储过程 `sp_DeleteAllData`,该过程将删除所有...

    SQL SERVER 数据自动生成SQL语句

    SQL Server 数据自动生成SQL语句是一项实用的功能,它极大地简化了数据迁移或备份的过程。这个功能使得用户能够快速地根据数据库中的表结构和已有数据,生成相应的SQL插入语句,以便将这些数据移植到其他数据库系统...

    将sqlserver中的数据导出成为sql语句

    标题提到的“将sqlserver中的数据导出成为sql语句”是指将SQL Server数据库中的表结构和数据转换为一系列的INSERT INTO SQL语句,这样就可以通过执行这些语句在另一个数据库中重建相同的数据。这一过程对于开发、...

    mysql转化成sql server sql转化成mysql工具

    MySQL可能不支持某些SQL Server特有的高级特性,如特定的函数或T-SQL语句,因此转换过程中可能需要手动调整。 转换工具通常会提供图形化界面,简化操作流程,但也有一些命令行工具,适合开发者进行更精细的控制。...

    sql server 导入超大SQL脚本文件

    在 SQL Server 2008 中,如果我们要导入超大 SQL 脚本文件(超过 10MB),使用 SQL Management Studio 查询工具可能无法打开脚本文件。这时,我们可以使用 osql 工具来导入超大 SQL 脚本文件。 osql 工具的使用格式...

    SQLServer实用SQL语句大全

    《SQLServer实用SQL语句大全》是一本涵盖了SQL Server数据库管理与开发的全面指南,旨在帮助用户深入理解和熟练运用SQL语言。此书共分为15个章节,每一章都精心设计,理论结合实践,旨在让读者能够从基础到高级逐步...

    SQL Server 2005 格式化sql语句

    在SQL Server 2005中,格式化SQL语句是一项重要的任务,它能帮助数据库管理员和开发人员更好地理解和维护复杂的查询。一个清晰、整洁的SQL语句不仅可以提高代码的可读性,也有助于减少错误和提高工作效率。本文将...

    Excel根据表格,批量生成sqlserver语句 ,生成建表语句,自行到数据库中执行

    标题提到的“Excel根据表格,批量生成sqlserver语句,生成建表语句,自行到数据库中执行”,就是一种利用Excel宏自动化生成SQL Server建表语句的方法。这种方法适用于已有数据结构清晰的Excel表格,通过特定的规则...

    SQL Server宝典SQL Server语句大全

    存储过程是一组预编译的SQL语句,可提高性能并简化代码维护。触发器则是在特定数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行的代码。 四、查询语言 SQL Server中的查询主要通过SELECT语句实现,可以进行单...

    SQLServer动态SQL语句的用法

    SQL Server 中的动态 SQL 语句是一种灵活的查询方式,它可以根据不同的情况生成不同的 SQL 语句。动态 SQL 语句可以用来实现复杂的业务逻辑,提高查询效率和灵活性。 普通 SQL 语句和动态 SQL 语句的区别 普通 SQL...

    在SQL Server中创建用户角色及授权(使用SQL语句) .pdf

    这篇文档主要讲述了如何使用SQL语句在SQL Server中创建用户角色并进行授权。首先,我们从创建登录账户开始,然后创建数据库用户,接着将登录账户与数据库用户关联,并通过加入数据库角色来赋予用户特定的权限。 1. ...

    SQL server Native Client 10.0

    - 支持新的T-SQL语句和函数,如WITH Common Table Expressions (CTE) 和窗口函数。 - 包含对XML数据类型的全面支持,包括XML索引和XML数据修改语言(XMML DML)。 - 支持透明网络IP解析(TNIR),使得应用程序能够在...

    SqlServer连接工具

    查询编辑器,支持Transact-SQL语句的编写和执行;以及脚本生成器,帮助用户创建和维护数据库脚本。 其次,SQL Server Data Tools (SSDT) 是一套Visual Studio插件,用于数据库开发和项目管理。开发者可以使用SSDT...

    SQLServer导出为Insert语句

    在SQL Server中,可以使用多种工具或T-SQL语句来导出数据,例如`bcp`命令行工具,`SELECT INTO`语句,或者使用SSMS(SQL Server Management Studio)的“任务”>“生成脚本”功能。 4. **Insert语句**:在SQL中,...

Global site tag (gtag.js) - Google Analytics