2014-10-28 64 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)