我有以下查詢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'中可能存在時間部分問題。 –