上下文:事件調度軟件。MySQL:在查詢中查找相對值
由於有關查找重複的值上this question答案,我想出了下面的查詢,這完全適用於找到誰是在同一時間安排兩個事件用戶:
SELECT *
FROM panel_participants pp
WHERE EXISTS
(
SELECT 1
FROM panel_participants pps
WHERE pp.user_id = pps.user_id
AND pp.day_time_slot_id = pps.day_time_slot_id
AND pp.day_time_slot_id > 0
LIMIT 1, 1
)
現在我需要是一個非常相似的查詢,但有一點不同:我想查找pp.day_time_slot_id = pps.day_time_slot_id + 2
(這將顯示用戶已安排兩次連續事件的位置)的項目。但是,這返回零行:
SELECT *
FROM panel_participants pp
WHERE EXISTS
(
SELECT 1
FROM panel_participants pps
WHERE pp.user_id = pps.user_id
AND pp.day_time_slot_id = pps.day_time_slot_id + 2
AND pp.day_time_slot_id > 0
LIMIT 1, 1
)
而且我知道有行應符合條件,例如,用戶503計劃在時間段23和25的項目。
我試着根據對this question的回覆設置變量,但我想我不理解變量如何工作並傳入和傳出查詢,因爲我嘗試的每件事都會返回一個錯誤或零行。我已經確認,day_time_slot_id
是一個整數,以防有所作爲。
幫助?
向我們展示一些示例數據 – Stephan
請提供一些示例數據和預期結果 –
您第一次查詢似乎沒有做您想做的事。它正在記錄並檢查相同的記錄是否出現在同一張表中。由於沒有任何東西可以排除始終與自身匹配的原始記錄。假設你有一個面板ID之類的東西,很容易修復。 – Kickstart