有个问题想请教。当我使用左联接时,即使某些行中的值为空值,如何列出所有左表以显示数据?
这是我的查询:
SELECT *, SUM(transactions.debit_credit) current_spending
FROM (`budget`) LEFT JOIN `categories` ON `budget`.`category`=`categories`.`idcategory`
LEFT JOIN `user_category` ON `budget`.`category`=`user_category`.`idcategory`
LEFT JOIN `category_transaction` ON `budget`.`category`=`category_transaction`.`idcategory`
LEFT JOIN `transactions` ON `category_transaction`.`idtransaction`=`transactions`.`idtransaction`
WHERE `user_category`.`iduser` = '1'
AND MONTH(transactions.transaction_date) = '11'
GROUP BY `budget`.`idbudget`;
当我删除 AND MONTH(transactions.transaction_date) = '11'
时,查询工作正常,接受它显示所有数据,而不仅仅是 1 个月的交易。
帮忙??请??知道怎么做吗?
最佳答案
您的 where
子句将您的左联接
转换为内联接
,因为您根据联接表的条件过滤数据。
而是将该条件放入联接的 on
子句中
SELECT *, SUM(transactions.debit_credit) current_spending
FROM (`budget`)
LEFT JOIN `categories` ON `budget`.`category`=`categories`.`idcategory`
LEFT JOIN `user_category` ON `budget`.`category`=`user_category`.`idcategory`
AND `user_category`.`iduser` = '1'
LEFT JOIN `category_transaction` ON `budget`.`category`=`category_transaction`.`idcategory`
LEFT JOIN `transactions` ON `category_transaction`.`idtransaction`=`transactions`.`idtransaction`
AND MONTH(transactions.transaction_date) = '11'
GROUP BY `budget`.`idbudget`;
关于mysql - 选择 MySQL Month() 作为空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26943781/