我有兩個表。
users
|id | name |
| --|-------|
| 1 | Jhon
| 2 | David |
擦拭
| id | swp_from | swp_to| first_swp| second_swp |
| ---|----------|-------|----------|------------|
| 1 | 1 | 2 | like | pending |
| 2 | 1 | 2 | like | pending |
我需要從swp_from和swp_to兩個表中加入這些表,這取決于條件。
我的查詢是這樣的:
SELECT name, swp_to, first_swp FROM swipes
LEFT JOIN users ON users.id = swipes。 swp_to // JOINING WITH swp_to TO MATCH First WHERE CONDITION
WHERE[/span
(swipes.swp_from = :me AND ((swipes. first_swp NOT IN ('like', 'superlike') OR (swipes.first_swp IN ('like', 'superlike') AND swipes.second_swp NOT IN ('like', 'superlike' )))) // FIRST CONDITION
OR
(swipes.swp_to = :me AND swpipes.second_swp != 'pending) // for this SECOND CONDITION我需要to JOIN USERS TABLE USING swp_from AS Well IN THIS SAME QUERY
正如上面的查詢所解釋的那樣,我已經將swp_to與users表連接起來。但是我還需要將swp_from加入WHERE子句中的第二個條件和users表。我怎樣才能做到這一點呢?
簡單地說,我需要查詢使用users表加入swp_to,如果第一個where條件被滿足。如果第二個where條件(在OR之后)得到滿足,那么我希望連接使用swp_from而不是swp_to。這應該發生在每一行。一個PHP條件邏輯的作業方法也可以很好。
uj5u.com熱心網友回復:
條件應該被移到ON子句中。
在MySql中,一個CASE運算式可以用來回傳布爾運算式的結果(如1或0表示true或false),像這樣:
SELECT u.name, s.swp_to, s.first_swp
FROM swipes s LEFT JOIN users u
ON CASE (s.swp_from = :me AND ( (s. first_swp NOT IN ('like', 'superlike') OR (s.first_swp IN ('like', 'superlike') AND s.second_swp NOT IN ('like'/span>, 'superlike'))))
WHEN 1 THEN u.id = s.swap_to
WHEN 0 THEN u.id = s.swp_from AND (s。 swp_to = :me AND s.second_swp <> 'dending')
END;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/306804.html
標籤:
上一篇:存盤函式回傳0mysql
下一篇:回傳.then()的結果
