My SQL和LINQ 实现ROW_NUMBER() OVER以及Fatal error encountered during command execution
Oracle 和SQL server都有ROW_NUMBER() OVER这个功能函数,主要用于分组排序,而MySQL 却没有
SELECT * FROM (SELECT ROW_NUMBER() OVER (PARTITION BY H.ALARMINDEX ORDER BY H.HANDLETIME DESC) N,
H.* FROM M_ALARMHANDLE H) M
WHERE M.N=1
SELECT ROW_NUMBER() OVER (PARTITION BY H.ALARMINDEX ORDER BY H.HANDLETIME DESC) N, H.* FROM M_ALARMHANDLE H,这个语句就是用于分组 排序的语句,后面的where M.N=1是取得分组排序后组中第一行,
对应的My SQL语句为
select HANDLELSH,ALARMINDEX,HANDLESTATUS,HANDLETIME,HANDLEPERSON,HANDLEDESCRIPTION,HANDLETYPE,rank from
(
select H.*,@rownum:=@rownum+1 ,
if(@Group=H.ALARMINDEX,@rank:=@rank+1,@rank:=1) as rank,
@Group:=H.ALARMINDEX
from (
select * from M_ALARMHANDLE order by HANDLETIME DESC
) H ,(select @rownum :=0 , @Group := null ,@rank:=0) a ) result where rank=1;
对应的LINQ语句为
var M_ALARMHANDLEList = (from HA in dbManager.M_ALARMHANDLE
group HA by HA.ALARMINDEX into HH
from MH in HH
orderby MH.HANDLETIME descending
select new
{
RowNo = RowNo+1,
MH.HANDLELSH,
MH.HANDLEDESCRIPTION,
MH.HANDLEPERSON,
MH.HANDLESTATUS,
MH.HANDLETIME,
MH.HANDLETYPE,
MH.ALARMINDEX
}).Where(m=>m.RowNo==1);
测试功能举例(摘自他人但已经测过)
drop table if exists Wmy;
create table Wmy (id int ,GroupId int ,salary decimal(,) );
insert into Wmy values
(,,5500.00),
(,,4500.00),
(,,1900.00),
(,,4800.00),
(,,6500.00),
(,,14500.00),
(,,44500.00),
(,,6500.00),
(,,7500.00);
select id,GroupId,salary,rank from
(
select H.id,H.GroupId,H.salary,@rownum:=@rownum+ ,
if(@Group=H.GroupId,@rank:=@rank+,@rank:=) as rank,
@Group:=H.GroupId
from (
select id,GroupId,salary from Wmy order by GroupId asc ,salary desc
) H ,(select @rownum := , @Group := null ,@rank:=) a ) result;
错误1,以上语句在MySQL WorKBench中可以正常执行但是在C#中可能报错Fatal error encountered during command execution
此时,只要在连接数据库字符串中加入Allow User Variables=True即可解决
My SQL和LINQ 实现ROW_NUMBER() OVER以及Fatal error encountered during command execution的更多相关文章
- SQL、Linq、lamda表达式 同一功能不同写法
一.SQL.Linq.lamda表达式 同一功能不同写法 SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employe ...
- SQL Server排序函数row_number和rank的区别
SQL Server排序函数row_number和rank的区别 直接看测试结果 declare @table table(name varchar(100),amount int, memo var ...
- SQL、LINQ、Lambda 三种用法(转)
SQL.LINQ.Lambda 三种用法颜色注释: SQL LinqToSql Lambda QA1. 查询Student表中的所有记录的Sname.Ssex和Class列.select sname, ...
- 浅谈sql 、linq、lambda 查询语句的区别
浅谈sql .linq.lambda 查询语句的区别 LINQ的书写格式如下: from 临时变量 in 集合对象或数据库对象 where 条件表达式 [order by条件] select 临时变量 ...
- sql转Linq的工具
本文转载:http://www.cnblogs.com/huangxincheng/archive/2011/05/12/2044990.html 介绍一个小工具 Linqer 这些天写Linq挺 ...
- SQL Server分页语句ROW_NUMBER,读取第4页数据,每页10条
SQL Server分页语句ROW_NUMBER,读取第4页数据,每页10条 SELECT Id,[Title],[Content],[Image] FROM ( SELECT ROW_NUMBER( ...
- 从sql走向linq的我撞死在起点上
[本文纯个人理解,错误轻喷,非常希望能有大神指点] A left (outer) join B on A.bid=B.id 上面这句话叫做左连接,原因是left(左)join(加入,连入)被译为左连接 ...
- 在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值)
原文:在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. sql循环取差值,该怎 ...
- 在论坛中出现的比较难的sql问题:31(row_number函数+子查询 月环比计算)
原文:在论坛中出现的比较难的sql问题:31(row_number函数+子查询 月环比计算) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
随机推荐
- Linux基本配置和管理 4 ---- Linux系统启动详解
1 系统启动的流程 BIOS -> MBR+boot code -> 执行引导程序: GRUB -> 加载内核 -> 执行init -> 运行runlevel 2 启动详 ...
- Malloc碎碎念
(以前为给同学分享写的点东西,很基础.)现在的比赛中堆溢出非常常见,对于glibc下malloc的理解也要深入一些. malloc_chunk的对齐属性 在glibc中,malloc_chunk以 2 ...
- linux-FTP服务常用命令及测试
一.vsftpd服务的安装,启动及关闭1.安装vsftpd[root@rusky bdump]# yum install vsftpd --必须配置yum源才能使用yum命令来安装vsftpd,或者挂 ...
- 【MFC学习笔记-作业7-小型画图软件】【】
作业要求: 按下鼠标右键画圆. 按下鼠标左键移动曲线. 丝毫没有思路..网上教程又比这个程序复杂100倍... 好吧 总算找到一个合适的了... 转载至:http://blog.chinaunix.n ...
- JS中的Function对象
Function是函数的原型,所有的函数都来源于Function,获得函数的方法有两种类型,分为动态函数和函数继承. 动态函数 创建一个Function语法: var func = new Funct ...
- T-SQL视图
视图(view) 用于存储封装一个select语句,使用方法和表一样.也可通过界面对视图进行操作. create view ordersWithNum --创建一个视图ordersWithNum as ...
- UVA 1599 Ideal Path
题意: 给出n和m,n代表有n个城市.接下来m行,分别给出a,b,c.代表a与b之间有一条颜色为c的道路.求最少走几条道路才能从1走到n.输出要走的道路数和颜色.保证颜色的字典序最小. 分析: bfs ...
- shell编程001
1.shell中如何进行算术计算 A=1; B=2 (1)let C=$A+$B (2)C=$[$A+$B] (3)C=$(($A+$B)) (4)C=`expr $A + $B` (注意运算符前 ...
- Qt中实现菜单和工具栏功能
Qt创建菜单和工具栏: 一. temp.h文件的内容 1.定义类temp继承QMainWindow 2.添加Q_OBJECT , 构造函数 . 析构函数等内容 3.$重点内容 3.1定义QActio ...
- sql的集合运算
表的加减法 union:使用union 对表进行假发(并集)运算, union等集合运算符通常都会去除重复记录. select shohin_id, shohin_mei from shohin un ...