我有以下查询
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
这将有效,但只选择userID为1的记录,并且不会返回任何userID为0的记录
我觉得是喜欢我的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"]);
答案 0 :(得分:0)
我认为你应该尝试在两个逻辑比较之间使用括号。
答案 1 :(得分:0)
尝试使用括号来界定您的条件。 这将有效:
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
或者由于条件适用于同一列,您可以使用&#34; IN&#34;:
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;
答案 2 :(得分:0)
首先你的问题是你把条件变成了条件
进入 - &gt; userId等于1或其余为
关于日期时间比较需要一些转换,这是我的代码改进:
SELECT eventID, description, title, event_start, event_end, userID
FROM SIS_EVENT
WHERE userID IN (0, 1) AND
Convert(DateTime, event_start) >=Convert(DateTime,'2017-01-01',106) AND
Convert(DateTime, event_end) <=Convert(DateTime,'2017-10-10',106);