MySQL过滤结果

时间:2010-02-03 09:27:47

标签: sql mysql join filter

我的SQL中有一个表,其结构如下:

+----+--------+------+---------+
| id | action | type | user_id |
+----+--------+------+---------+
|  1 |      5 |    4 |       1 | 
|  2 |      6 |    4 |       1 | 
|  3 |      5 |    4 |       2 | 
|  4 |      0 |    0 |       2 | 
|  5 |      0 |    1 |       2 | 
+----+--------+------+---------+

我有这样的用户表:

+----+------------+----------------------------------+----------+
| id | fullname   | password                         | username |
+----+------------+----------------------------------+----------+
|  1 | Admin User | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | admin    | 
|  2 | Arthur     | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | arthur   | 
|  3 | john       | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | john     | 
+----+------------+----------------------------------+----------+

我想从操作表中选择除管理员操作之外的所有操作,我尝试过:

SELECT * FROM actions WHERE user_id != 1;

但是这在某些情况下不起作用,因为admin user_id并不总是1。

如何选择除管理员操作之外的所有操作,我已尝试搞乱JOINS但无法理解。

希望你知道我的意思。

干杯

EEF

1 个答案:

答案 0 :(得分:2)

SELECT * FROM actions inner join users
on actions.user_id = users.id 
WHERE users.username != "admin";

假设所有管理员都有用户名“admin”