我有这个查询:
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()
但这不起作用......
有什么想法吗?
谢谢
最佳答案
试试这个
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
关于python - 包含空值列的 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12278787/