我有一个表FOLDERS
,每次通过php页面添加一个文件夹时,它会被插入到FOLDERS中。
每个文件夹都包含以下字段:id,userid,foldername
我简化了表格,使我的问题更容易掌握。
ID UID FOLDERNAME
1 - 1 - 书籍
2 - 1 - 收据
3 - NULL - 书籍
4 - NULL - 收据
5 - NULL - 主页
6 - 2 - 收据
我想知道如何获得第五行的结果。 条件是:第5行没有任何UID(它为空)并且与uid不存在这一事实。当我使用时:
$sql="SELECT * FROM folders WHERE userid=''";
这将返回所有具有空userid的行。我只想要5因为UID = 1已经设置了他的文件夹Receipts和Books。 任何建议都会帮助我在这几个小时内一直在努力。谢谢
答案 0 :(得分:5)
将null用户标识行的条件userid IS NULL
与NOT IN()
子查询结合起来,该子查询返回在其他行中具有userid
的所有不同文件夹名称。
SELECT *
FROM hpoptions
WHERE
userid IS NULL
AND foldername NOT IN (
SELECT DISTINCT foldername FROM hpoptions WHERE userid IS NOT NULL
)