我想查詢MySQL數據庫中的表。在MySQL中使用AND並不返回任何結果
所以基本上,我需要基於表中列的值進行查詢。所以:
如果列A =值AND thisID是在值
OR A列<值與thisID是在值
但該查詢返回null的陣列,但數據的數組在數據庫中。
編輯:桌上的小背景和我想要做的。
來自界面的用戶將選擇一個業務區域。該業務區域可能有許多子區域(部門等),並且在這些區域內可能有許多用戶分配給每個部門。所以我將這個查詢傳遞給一個用戶和區域的數組。
如果分配類型爲3,則該條目被分配給用戶,所以想要然後檢查用戶(ID)是陣列所以在:r.assigned_type = 3 AND r.assigned_id IN(26102,26132,26133,26134,44749)
如果分配類型是1或2,所以不到3,該條目被分配到一個區域(網站/部門)。所以我想檢查區域(ID)是否在陣列中,因此:r.assigned_type < 3 AND r.assigned_id IN(10901,10937,10938,10939,10940,10941)
有可能有用戶和部門都有條目,這就是爲什麼我需要使用OR來檢查是否已分配用戶和區域
我使用正確的語法嗎?我沒有收到任何語法錯誤?
SELECT `r`.`risk_id`, `r`.`assigned_type`, `r`.`risk_type_id`, `r`.`risk_name`, `r`.`next_review`, `r`.`last_review`, `r`.`status`, `a`.`area_name`, `u`.`first_name`, `u`.`last_name`
FROM `risk_assessments` `r`
LEFT JOIN `users` `u` ON `u`.`id` = `r`.`assigned_id`
LEFT JOIN `areas` `a` ON `a`.`area_id` = `r`.`assigned_id`
WHERE `r`.`org_id` = 78
AND `r`.`risk_type_id` = 10
AND `r`.`assigned` = '1'
AND `u`.`privilege_level` <= 7
AND ((`r`.`assigned_type` = '3' AND `r`.`assigned_id` IN(26102,26132,26133,26134,44749))
OR (`r`.`assigned_type` < '3' AND `r`.`assigned_id` IN(10901,10937,10938,10939,10940,10941)))
你描述的不符合是什麼在查詢中,這反過來可能不是你打算做什麼達成一致的邏輯。儘管你應該清楚地告訴我們你的邏輯,以便有人能夠幫助你,但我可能會有一個括號問題。 –
您不能在代碼中使用IF和ELSE條件來檢查'assigned_type'並在具有不同JOINS的條件下編寫兩個不同的查詢嗎? –
怎麼樣CASE,我可以在查詢中使用大小寫,具體取決於列的值 – frobak