2010-02-03 154 views
1

我有一个表,我在下面的结构,称为行为SQL:MySQL的筛选结果

+----+--------+------+---------+ 
| 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; 

但是,这在某些情况下不起作用因为管理员user_id并不总是1.

我该如何去选择除管理员操作之外的所有操作,我尝试过使用JOIN搞乱但无法弄清楚。

希望你明白我的意思。

干杯

EEF

+0

为了回答这个问题,需要一些更多的信息。最重要的是:如果管理员不总是有'user_id = 1',你怎么知道用户是否是admin。我们应该使用'username = admin'吗?作为备忘录:“类型”是什么意思?如果在两行中“行动”是相同的,那么这是否意味着“类型”也是一样的?如果是这种情况,您可能需要为操作类型使用单独的表格。 – Martijn 2010-02-03 09:33:43

+0

管理员用户始终存在于系统中,因为它是在安装过程中创建的默认用户。 – RailsSon 2010-02-03 09:49:57

回答

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

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