簡體   English   中英

如何基於從同一查詢的內部聯接接收的值來左連接表

[英]How To Left Join A Table Based On The Value Received From Inner Join Of The Same Query

我試圖運行以下查詢,並不斷收到語法錯誤。 沒有LEFT JOIN,查詢工作正常。 如何實現LEFT JOIN而不出錯?

SELECT
    m.mid, 
    m.seq, 
    m.created_on, 
    m.created_by, 
    m.body, 
    r.status,
    u.username_clean
FROM message_recipient r
INNER JOIN message m 
ON m.mid = r.mid AND m.seq = r.seq
WHERE r.uid = ".$logged_in_id." 
AND r.status in ('A', 'N')
AND r.seq = (
             SELECT 
                MAX(rr.seq)
             FROM message_recipient rr
             WHERE rr.mid = m.mid 
             AND rr.status in ('A', 'N')
            )
AND IF (m.seq=1 and m.created_by = ".$logged_in_id." , 1=0, 1=1)
ORDER BY created_on DESC
LEFT JOIN users u 
ON u.user_id = m.created_by

LEFT JOIN位置錯誤。 所有JOIN都需要在WHERE子句之前:

SELECT
    m.mid, 
    m.seq, 
    m.created_on, 
    m.created_by, 
    m.body, 
    r.status,
    u.username_clean
FROM message_recipient r
INNER JOIN message m 
  ON m.mid = r.mid AND m.seq = r.seq
LEFT JOIN users u 
  ON u.user_id = m.created_by
WHERE r.uid = ".$logged_in_id." 
  AND r.status in ('A', 'N')
  AND r.seq = (
               SELECT 
                  MAX(rr.seq)
               FROM message_recipient rr
               WHERE rr.mid = m.mid 
               AND rr.status in ('A', 'N')
              )
  AND IF (m.seq=1 and m.created_by = ".$logged_in_id." , 1=0, 1=1)
ORDER BY created_on DESC

SQL子句按以下順序排列:

SELECT 
FROM
JOIN
WHERE 
GROUP BY 
ORDER BY

即使你有多個連接,它們也會出現在WHERE之前

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM