1

我有以下两个表:

auth_user

  • ID
  • 用户名
  • is_active (boolean) ...

使用profile_userprofile

  • ID
  • 用户身份 ...

我如何找到=0 且没有 userprofile_userprofile 对象的所有auth_user对象?例如,像这样的条目——is_activeuser_id

auth_user

  • 编号 = 1
  • 用户名 = hello@gmail.com
  • is_active = 0

并且userprofile_userprofile没有对象 where user_id= 1

4

6 回答 6

3
SELECT *
FROM auth_user A
LEFT JOIN userprofile_userprofile B ON A.id=B.user_id
WHERE A.is_active = false and B.user_id IS NULL

什么时候B.user_idNULL意味着它找不到行 where user_id=1
这假设 tableuserprofile_userprofile中的 id 都不是NULL

于 2012-04-04T07:16:04.317 回答
2
select * from auth_user au
where au.is_active = 0 and 
    not exists(select * from userprofile_userprofile uu where uu.user_id = au.user_id)
于 2012-04-04T07:13:19.857 回答
2
SELECT
    *
FROM
    auth_user
WHERE
    auth_user.is_active=0
    AND NOT EXISTS
        (
            SELECT
                NULL
            FROM
                userprofile_userprofile 
            WHERE
                userprofile_userprofile.user_id=auth_user.id
        )
于 2012-04-04T07:14:07.390 回答
1

除了其他解决方案,您还可以通过LEFT JOIN

SELECT
*
FROM
auth_user au
LEFT JOIN useprofile_userprofile uu ON au.id = uu.user_id
WHERE uu.id IS NULL
AND au.is_active = 0
于 2012-04-04T07:17:07.573 回答
0
select au.id,au.username,count(up.id) from auth_user au
left outer join useprofile_userprofile up
on au.id=up.user_id
where is_active = 1 
group by au.id,au.username
having count(up.id)=0
于 2012-04-04T07:19:41.397 回答
0

您正在寻找表连接。参考本教程:

http://www.tizag.com/mysqlTutorial/mysqljoins.php

要回答您的问题,您正在寻找以下内容:

“选择 auth_user.username,auth_user.is_active,useprofile_userprofile.user_id WHERE is_active = 0 AND user_id != 1”

于 2012-04-04T07:17:12.380 回答