mysql - 如何结合 left join 和 where join(旧式逗号连接)?

标签 mysql sql left-join

<分区>

这没问题

select user.`username` , id_user_gender.text gender
from user
left join id_user_gender
on user.idGender = id_user_gender.id
where 1

这个也没问题

select user.`username` , user.idType
from user,id_user_type
where user.idType=id_user_type.id

但这是错误:#1054 - “on 子句”中的未知列“user.idGender”

select user.`username` , id_user_gender.text gender, user.idType
from user,id_user_type
left join id_user_gender
on user.idGender = id_user_gender.id
where user.idType=id_user_type.id

如何在同一个查询中使用left join和where join?

这个我也试过,但是不行

select uu.`username` , id_user_gender.text gender, uu.idType
from user as uu,id_user_type
left join id_user_gender
on uu.idGender = id_user_gender.id
where uu.idType=id_user_type.id

最佳答案

你不知道。您将所有 JOIN 逻辑放在FROM 子句中,其中JOIN 属于:

select u.`username`, iug.text gender, u.idType
from user u join
     id_user_type iut
     on u.idType = iut.id left join
     id_user_gender iug
     on u.idGender = iug.id;

简单规则:永远不要FROM 子句中使用逗号。 始终使用正确、明确、标准 JOIN 语法。

关于mysql - 如何结合 left join 和 where join(旧式逗号连接)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58115552/

相关文章:

mysql - 从多属性搜索的条件中删除搜索字符串/查询属性。从 where 条件中删除空白参数的空白属性

python - 插入数百万行的性能

MYSQL连接2个表,两个表的金额总和按第一个表分组

sql - 列 SQL 的多数表决

sql - SQL如何修改XML中属性的首位?

mysql - 级联 LEFT JOIN 与子选择

mysql - 将 LEFT JOIN 与 GROUP BY 组合,同时还包括 NULL

php - Android Web 服务 - "poke"Web 服务

mysql - 如何在MySQL中高效查找两个日期之间的特定天数?

java - SQL 到对象,多对多带字段