我的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
答案 0 :(得分:2)
SELECT * FROM actions inner join users
on actions.user_id = users.id
WHERE users.username != "admin";
假设所有管理员都有用户名“admin”