sql - 如何解释结果?

标签 sql database select join

当我执行 SQL 时,为什么结果仍然包含 isuser=1 的数据:

SELECT * 
FROM sys_userdept
LEFT JOIN sys_deptdef sys_deptdef ON sys_userdept.nodeid=sys_deptdef.deptid
AND isuser=0 ORDER BY sys_userdept.pnodeid,sys_userdept.relationid;

最佳答案

那是因为您使用了 LEFT JOIN - 它从第一个表中获取所有记录,即使在连接的表中没有匹配的记录也是如此。

将您的isuser=0 条件移动到WHERE:

select * 
from sys_userdept
left join sys_deptdef sys_deptdef on sys_userdept.nodeid=sys_deptdef.deptid
where isuser=0
order by sys_userdept.pnodeid,sys_userdept.relationid;

关于sql - 如何解释结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18739278/

相关文章:

php - MySQL Join 将不匹配的记录包含在 WHERE 语句中

jQuery,选择具有属性的最近兄弟(下一个或上一个)

C++ select() 减少文件描述符计数

python - select.select() 没有捕捉到套接字上的异常情况?

mysql - 亚马逊极光内存溢出

SQL:如何选择组中同一行的两个字段?

mysql - 无法从数据源获取 JDBC 连接

mysql - 在 PHPMyAdmin 更新后恢复数据

php - 从数据库中旋转图像并保存到数据库 blob 类型

android - 如何将 Android 应用程序数据持久保存到 Heroku 兼容的数据库中?