繁体   English   中英

带有空值列的MySQL查询

[英]MySQL query with column of null values

我有这个问题:

 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM