【发布时间】:2015-10-01 13:45:11
【问题描述】:
我有一张这样的桌子:
id | id_user | approved
-----------------
1 | 15 | 1
2 | 11 | 1
3 | 15 | 1
4 | 11 | -1
5 | 6 | 1
只有当每个 id_users 的每个批准都等于 1 时,我才想选择 id_user 的不同值。 输出:
id | id_user | approved
-----------------
1 | 15 | 1
2 | 6 | 1
如您所见,id_user 11 未被选中,因为一个已批准的值等于 -1。我如何在 mysql 中做到这一点?
我试过SELECT * FROM table WHERE approved != -1 GROUP BY id_user,但显然它不起作用,所以我决定在这里问这个问题。
非常感谢您的宝贵时间。
//稍后编辑
我还有一个问题。我必须修改查询。我还有一张桌子
validation
id | id_user | valid
--------------------
1 | 15 | 1
我必须加入另一个表,但有一个条件。例如,假设您的查询输出(正确):
id | id_user | approved
-----------------
1 | 15 | 1
2 | 6 | 1
我想要加入这两个表:
LEFT JOIN (SELECT va.id_user,va.valid FROM validation va WHERE va.valid != 1) t2
ON t2.id_user = t1.id_user
但仅选择有效不等于 1 的那些行。validation 表中可能不存在第一个表中的 id_user。在这种情况下,查询应该准确返回 Alex 的查询输出。
让我举个例子。第一张表是一样的:
id | id_user | approved
-----------------
1 | 15 | 1
2 | 11 | 1
3 | 15 | 1
4 | 11 | -1
5 | 6 | 1
6 | 6 | 1
validation表:
id | id_user | valid
--------------------
1 | 15 | 1
查询应该输出:
id | id_user
------------
1 | 6
id_user = 15 与valid=1 在第二张表中,因此不会被选中
id_user = 11 在已批准字段中的值为 -1,因此不会被选中
id_user = 6 在两个已批准的字段中都有 1,但在第二个表中不存在,我希望它被选中。
【问题讨论】: