我有以下查询SQL查询结构不返回正确的结果
SELECT eventID, description, title, event_start, event_end, userID
FROM SIS_EVENT
WHERE userID=1 OR (userID=0) AND
event_start >=01/01/2017 AND event_end <=10/10/2017
这将工作,但只选择与1的用户ID的记录,并不会随着0
我一个用户ID返回任何感觉是像我的SQL,但我不是肯定的结构什么即时做错了 任何帮助表示赞赏
下面的代码中的SQL
SqlCommand cmd = new SqlCommand("SELECT eventID, description, title,
event_start, event_end, userID FROM SIS_EVENT WHERE userID IN (0, @user_id)
AND event_start >= '@start' AND event_end <= '@end' ", con);
cmd.Parameters.AddWithValue("@start", start);
cmd.Parameters.AddWithValue("@end", end);
cmd.Parameters.AddWithValue("@user_id", HttpContext.Current.Session["userid"]);
请标记您正在使用的DBMS(Oracle,PostgreSQL,MySQL等)。你的SQL是无效的(甚至不符合下面的代码)。 '01/01/2017'表示1除以1除以2017.''01/01/2017''会更好,但取决于数据库设置以使DBMS正确解释字符串。逻辑错误在这里:'userID = 1 OR(userID = 0 AND ...)'因为'AND'优先于'OR'。使用圆括号来解决这个问题:WHERE(userID = 1或userID = 0)AND ...'。根据数据库管理系统和数据类型的不同,你可能在'event_start'和'event_end'中可能存在时间部分问题。 –