c# - mysql 在 c# 上选择错误,但在 navicat 中的查询生成器上运行

标签 c# mysql

每次在 C# 上运行此查询时,我都会收到此错误。

“您的 SQL 语法有错误;请检查与您的 MariaDB 服务器版本相对应的手册,了解使用 close ':= 0 + 1 as rnk1 from attends_table, (select 0 := 0) r1 order 的正确语法通过 User_ID,第 1 行的 V'”

当我在查询生成器上运行它时,不会出现问题,一切正常。我已经添加了这一行

cmd.Parameters.AddWithValue("@r1", 0);
cmd.Parameters.AddWithValue("@r2", 0); 

有人可以帮我解决这个问题吗? 这是选择命令。

select 
t1.User_ID,concat(employee_profile.fname,' ',employee_profile.mname,' ',employee_profile.lname) as fullname,
CASE WHEN t1.Verify_State = '0'  THEN t1.Verify_Date END AS time_in,
CASE WHEN t2.Verify_State = '1' THEN t2.Verify_Date END AS time_out,round(TIMESTAMPDIFF(minute,t1.Verify_Date,t2.Verify_Date)/60,2) as Total_hours_worked,timeshift.time_in,
timeshift.time_ou
from 
(select * , @r1:=@r1+1 as rnk1 from attendance_table , (select @r1:=0) r1  order by User_ID, Verify_Date) as  t1 join 
(select * , @r2:=@r2+1 as rnk2 from attendance_table , (select @r2:=0) r2 order by User_ID, Verify_Date) as t2 
on t1.User_ID=t2.User_ID 
and t1.rnk1+1=t2.rnk2 
and t1.Verify_State=0 
and t2.Verify_State=1 
left Join 
employee_profile ON employee_profile.emp_id_no = t1.User_ID 
left JOIN employee_timeshift ON employee_timeshift.emp_id_no = t1.User_ID 
left JOIN timeshift on timeshift.id = employee_timeshift.timeshift_id
left JOIN timeshift_day on timeshift_day.timeshift_id = timeshift.id
where t1.Work_date BETWEEN  '2018-04-09' AND '2018-04-14' and t1.Work_time <> t2.Work_time and timeshift_day.day_id = if(DATE_FORMAT(t1.Verify_Date,'%H:%i:%s') BETWEEN '02:00:00' and '06:00:00',(DAYOFWEEK(t1.Verify_Date) -1)-1,DAYOFWEEK(t1.Verify_Date)-1)
order by  employee_profile.lname asc, t1.Verify_Date,t2.Verify_Date

最佳答案

cmd.Parameters.AddWithValue("@r1", 0);

您将查询中的 @r1 替换为 0,从而创建对文字的赋值。例如

@r1:=@r1+1

变成了

0:=0+1

(将0分配给0)。这不是有效的表达式,因为值只能分配给变量。

@r2 的模拟。

我猜当您直接运行查询时,您不会进行替换,因此它可以在那里工作。

由于您没有发布您真正想要做的事情,因此我无法给您任何进一步的建议。

关于c# - mysql 在 c# 上选择错误,但在 navicat 中的查询生成器上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50262782/

相关文章:

c# - 如何根据条件语句更改 gridview 单元格的背景颜色?

c# - 通过 TcpClient [C#] 的 HTTP(S) POST/GET 请求

php - 字段列表中的未知列。 PHP + MySQL

mysql - 如何完全删除 mariaDB 以便我可以重置 root 密码?

mysql - 当网络很慢时如何阻止相同的数据进入数据库

sql - 获取MySQL中具有最高值的行

c# - 返回计数列表并按 id linq to sql 分组

c# - Xamarin .net 标准对 APK 大小的影响

c# - UWP 应用程序 - AdControl 不显示任何具有测试模式值的内容

mysql - 使用sql从xml中提取值