当 JOIN 的表之一没有任何数据时,MySql 返回空结果

标签 mysql

使用下面的Sql查询,当所有表都有数据时,我可以获得成功的结果,但是在这个查询中,当transactions表没有任何已保存的数据并且其为空时,我的查询返回空结果,但是我想要获取 null 或空列数据

SELECT transactions.id, 
       userEwallets.ewalletNumber, 
       userEwallets.currencySymbol, 
       transactions.money, 
       transactions.transactionType, 
       b.username AS toUser, 
       a.username AS sender 
FROM transactions
   JOIN userEwallets ON transactions.ewalletId = userEwallets.id
   LEFT JOIN users AS b ON b.id = transactions.toUserId
   LEFT JOIN users AS a ON a.id = transactions.fromUserId
WHERE transactions.userId = 37

当它不为空时,我得到这个结果:

id  ewalletNumber       currencySymbol  money   transactionType toUser  sender
95  SHIRR9373036569     IRR 20          1       1                   amin

最佳答案

您可以使用一行虚拟表。其他表应该保留连接到它。

SELECT transactions.id, 
       userEwallets.ewalletNumber, 
       userEwallets.currencySymbol, 
       transactions.money, 
       transactions.transactionType, 
       b.username AS toUser, 
       a.username AS sender 
FROM (select 1) dummy
   LEFT JOIN transactions ON transactions.userId = 37
   LEFT JOIN userEwallets ON transactions.ewalletId = userEwallets.id
   LEFT JOIN users AS b ON b.id = transactions.toUserId
   LEFT JOIN users AS a ON a.id = transactions.fromUserId

如果你给它一个别名,你总是可以使用子查询来代替表名。请注意,您必须将左连接表的 WHERE 条件移至 ON 子句中 - 否则 MySQL 会将其转换为 INNER JOIN。

关于当 JOIN 的表之一没有任何数据时,MySql 返回空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38934618/

相关文章:

mysql - 如何将sql代码更改为informatica流程

php - 如何在 yii 1.1.13 中从数据库检查用户名和密码

php - UTF-8贯穿始终

javascript - 我如何解析来自 openlibrary api 的 Json 数据? (适本地)

mysql - 引用复合主键的单个列

mysql - 能够在 Rails 控制台中将自己添加为好友

javascript - 如何检查多个字符串变量是否不为空或为空?

MySQL 查询使用小于和 ORDER BY DESC

java - 带有 swing mysql 和配置文件的小程序在 eclipse 中工作但在浏览器中失败

php - IOS-如何通过php实现应用程序自动登录的 session