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函数+子查询 月环比计算) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路.
随机推荐
- iOS 各种传值方式
属性传值 将A页面所拥有的信息通过属性传递到B页面使用 B页面定义了一个naviTitle属性,在A页面中直接通过属性赋值将A页面中的值传到B页面. A页面DetailViewController.h ...
- 百度编辑器ueditor 在vs2008中的使用方法
个人觉得百度编辑器ueditor还是不错的,虽然出生的时间比较短,但某些方面相比其它富文本编辑器更优秀,免费.可定制等等. 由于在官方下载的ueditor包是在vs2012下开发的,可以在vs2010 ...
- 在ios8上 [TableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];不起作用 经过测试加入下面方法 在ios7 8上都可以正常工作
-(void)viewDidLayoutSubviews { if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)] ...
- Gson解析JsonObject和JsonArray
Gson中重要的几个核心类: Gson.JsonParser.JsonObject.JsonArray. 下面就是解析的步骤: public void parserJsonArray(String s ...
- Linux系统学习笔记:文件I/O
Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...
- 5.7.2.2 min()和max()方法
Math对象还包含许多方法,用于辅助完成简单和复杂的数学计算. 其中,min()和max()方法用于确定一组数值中的最小值和最大值.这两个方法都可以接受任意多个数值参数,如下例子: var max = ...
- PhpStorm 4.0 & 5.0 部署本地Web应用
1.创建新的项目(project),创建完成之后单击工具栏的应用运行/调试(Select Run/Debug Configuration)的下拉菜单弹出 Edit Cofigurations选项,单击 ...
- ecshop使用Google API及OAuth2.0登录授权(PHP)
一.申请clientID https://console.developers.google.com/project 二.开启Google+ API权限 https://console.develop ...
- c# 中的 Trim
1. 让用户输入字符串 并且判断是否是 'yes'(无关大小写) Console.WriteLine("input a string"); string userResponse ...
- jQuery 中的 Ajax $.ajax() load() $.get() $.post() $.getJSON() $.getScript()
1. $.ajax()方法 参数对象属性如下: 参数名 类型 描述 url String (默认: 当前页地址) 发送请求的地址. type String (默认: "GET") ...