SQL选择user1具有多个而user2没有的位置

时间:2014-08-05 08:47:08

标签: mysql sql

这是我的查询,用于查找用户标识2的ID,我想运行查询,查找userid = 2且金额> 1的条目,而用户标识1没有该标识

SELECT id, amount FROM collection WHERE userid='2' AND amount>1

我不确定如何在SQL查询中执行if语句,但必须有一种方法可以轻松地执行此操作。

任何帮助将不胜感激

3 个答案:

答案 0 :(得分:1)

如果我理解正确,您需要具有用户ID = 2和金额>的用户列表。 1.此列表应忽略ID不在用户ID = 1

中的记录

示例输入/输出:

ID UserID Amount Returned?
1   2     0       No (Amount 0)
2   2      10     Yes
3   1      10 
3   2      5      (No, since ID =3 exists with Userid = 1)

以下查询可以帮助您。

SELECT C.ID, C.AMOUNT 
FROM COLLECTION C
WHERE C.USERID = 2 AND C.AMOUNT > 1 
      AND C.ID NOT IN 
              (  SELECT D.ID 
                 FROM COLLECTION D
                 WHERE D.USERID = 1
              );

Fiddle here

答案 1 :(得分:0)

"其中userid = 2且金额> 1且用户ID 1没有该ID"

您可以使用NOT EXISTS

SELECT id, amount 
FROM collection c
WHERE c.userid = '2' 
  AND c.amount > 1
  AND NOT EXISTS
  (
      SELECT 1 FROM collection c2
      WHERE c2.userid = '1'
       AND  c.id = c2.id
  )

答案 2 :(得分:0)

SELECT id, amount 
FROM collection 
WHERE userid='2' AND amount > 1 AND 
NOT id in (SELECT id FROM collection WHERE userid='1' AND amount > 1)

我不确定这是你的数据库是如何工作的,但这就是我将如何解决它。