我有这个问题:
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))
列'perm'(权限)是一个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的记录。
我认为我可以用这种方式检索perm = 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()
但这不起作用....
有什么想法吗?
谢谢
答案 0 :(得分: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