mysql - SQL语法帮助,条件AND

标签 mysql sql database

连续编码 48 小时,我正在用头撞墙。请帮我解决这个小问题。

我的 SQL 查询是这样的:

SELECT u.Firstname, u.Lastname, u.Rep, u.Email, u.Password, u.Gender, u.Level,
       u.Birthday, u.Achievements, u.Height, u.Unit, u.cityid, u.countryid,
       r.RegDate, ci.Name AS City, co.Name AS Country
FROM Users u, Registry r, Cities ci, Countries co
WHERE u.id = 1 AND r.uid = u.id AND u.cityid = ci.id AND u.countryid = co.id
LIMIT 1

我的问题是,我只是注意到有时 Users.cityidUsers.countryidNULL(这没问题)。

我希望查询为我提供该用户的所有其他信息(例如,为 CityCountry 返回 NULL),即使一个或两个这些字段是NULL。如何使 AND 部分成为条件?

我希望我能在迷茫中让自己清醒过来。

最佳答案

如果我正确理解了您的情况,我认为您需要几个 OUTER 连接。

SELECT ...
FROM Users u
INNER JOIN Registry r ON r.uid = u.id
LEFT JOIN Cities ci ON u.cityid = ci.id
LEFT JOIN Countries co ON u.countryid = co.id
WHERE u.id = 1 

关于mysql - SQL语法帮助,条件AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6852584/

相关文章:

php - 调用 Factory 时 Laravel 记录被删除

android - 这两种说法有什么区别?

database - Postgresql 删除表如果存在

mysql - 将字符串中的第一个字符与数字或非标准字符匹配

mysql - mysql/Innodb崩溃重启的主要原因

mysql - 存储 RSA key 的最佳 mysql 数据类型?

mysql - 访问 LIMIT 值作为 MySQL 中的列

sql - 插入并入

MySQL:获取计数和平均值

WHERE 子句中的 SQLite 计算列似乎正在工作(?)