2014-10-28 61 views
-1

我有一個關於SQL語句的問題。我有以下聲明:SQL格式難度

SELECT id, user_id, receiver AS friend 
FROM messages 
WHERE user_id = %d || receiver = %d 

在同一個表(消息)兩個字段:

  1. Storage_A

  2. Storage_B

現在我想對此SQL執行其他操作:

我只想選擇其中Storage_A != 0 when user_id = %d

我只想要選擇的行,其中Storage_B != 0 when receiver = %d

回答

2

使用AND條件添加這些額外的檢查類似下面

SELECT id, user_id, receiver AS friend 
FROM messages 
WHERE (Storage_A != 0 and user_id = %d) 
AND (Storage_B != 0 and receiver = %d) 

即使你說,你想同時得到條件匹配,但我覺得你想要做他們之間OR。所以WHERE下,應

where (Storage_A <> 0 and user_id = 8) 

OR 

(Storage_B <> 0 and receiver = 9) 
0

使用括號,以便將子句的行。

SELECT 
    id, user_id, receiver AS friend 
FROM 
    messages 
WHERE 
    (user_id = %d && Storage_A != 0) 
    OR (receiver = %d && Storage_B != 0) 
0

根據您的指標是如何設置,你可能需要做兩個查詢和UNION他們

SELECT id, user_id, receiver AS friend 
    FROM messages 
    WHERE Storage_A != 0 AND user_id = %d 
UNION 
SELECT id, user_id, receiver AS friend 
    FROM messages 
    WHERE Storage_B != 0 AND receiver = %d 
0

試試這個太

SELECT id, user_id, receiver AS friend FROM messages WHERE (Storage_A != 0 and user_id = %d) and (Storage_B != 0 and receiver = %d)