2010-02-03 76 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"; 

假設所有的管理員用戶名有 「管理員」