2012-09-05 37 views
0

我有這樣的查詢:MySQL查詢具有空的列的值

user = self.db.query("SELECT DISTINCT u.id, u.name, n.network_id, n.perm \ 
FROM users as u LEFT OUTER JOIN nets_permissions as n \ 
ON u.id = n.user_id WHERE u.id!=%s", int(usr_id)) 

列 '燙髮'(許可)是一個int值,即可以是象1,2,3,ECC的值。或者是一個空值。我想要一個像這樣的查詢:

user = self.db.query("SELECT DISTINCT u.id, u.name, n.network_id, n.perm \ 
FROM users as u LEFT OUTER JOIN nets_permissions as n \ 
ON u.id = n.user_id WHERE u.id!=%s" AND n.perm!=3, int(usr_id)) 

所以,我想從查詢中刪除perm = 3的記錄。

我鑫卡特,我可以通過這種方式檢索與燙髮= 3的用戶的ID:

self.lock_tables("read", ['nets_permissions']) 
     admin = self.db.query("SELECT user_id FROM nets_permissions \ 
           WHERE network_id=%s AND perm=3", nid) 
     self.unlock_tables() 

,然後我可以寫

self.lock_tables("read", ['users as u', 'nets_permissions as n']) 
    user = self.db.query("SELECT DISTINCT u.id, u.name, n.network_id, n.perm \ 
FROM users as u LEFT OUTER JOIN nets_permissions as n \ 
ON u.id = n.user_id WHERE u.id!=%s AND u.id!=%s", int(usr_id), int(admin)) 
      self.unlock_tables() 

但是,這並不工作.. ..

任何想法?

謝謝

回答

2

試試這個

SELECT DISTINCT u.id, u.name, n.network_id, n.perm 
FROM users as u 
LEFT OUTER JOIN nets_permissions as n 
ON u.id = n.user_id 
AND n.perm<> 3 
WHERE u.id!=%s 
+1

你真是個天才!非常感謝你!!!! – sharkbait

+0

@sharkbait不要忘記接受答案,請在這裏閱讀更多:http://meta.stackexchange.com/a/5235/195067 –

+0

@IliaRostovtsev給他們時間 - 有一個10分鐘的延遲限制,我想:) – podiluska