python - SQLAlchemy + MySQL 加入奇怪的行为

标签 python mysql sql flask sqlalchemy

已关注 this question

我注意到 ORM 生成的原始 sql 语句将 .join 转换为未指定的 SQL JOIN

在 sql 命令行中运行此生成的语句会返回意外结果,但在每个 join in 语句中添加 LEFT 会使结果正确。

据我所知,在 MySQL 中 LEFT 是可选的,因此显式添加它没有任何意义,那么为什么结果不同呢?

哪里错了?

最佳答案

LEFT JOIN 和 JOIN(又名 INNER JOIN)是不同的操作。

LEFT JOIN 返回 JOIN 返回的内容以及左参数中每个不匹配行的一行。添加的行看起来像是为右侧参数的每一列用 NULL 扩展的不匹配行。

JOIN 计算左侧参数中的一行与右侧参数中的一行扩展的所有可能组合,然后仅保留与 ON 条件匹配的行。 CROSS JOIN 就像 JOIN ON 1=1。

(在 MySQL 中,JOIN 不能有 ON,这意味着 CROSS JOIN。)

关于python - SQLAlchemy + MySQL 加入奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34719072/

相关文章:

python - 修改 selenium python 绑定(bind)中的语言选项时遇到问题

python - 组合数组以产生新的集体数组

Mysql需要选择多个条目数量最多的所有值

php - json_encode正在截断从mysql数据库读取的对象数据

mysql 存储过程更新所有行而不是 1

python - tensorflow ,tf.while_loop : The two structures don't have the same nested structure

python - 按住一个键并释放另一个

python - 使用 Python 在 MySQL 表中插入值

mysql - 是否可以找到最近n天内哪些表有新数据?

mySQL JOIN 用法