Mysql 左连接未按预期工作

标签 mysql left-join

我正在尝试一个简单的左连接,但这给我带来了问题。我需要列出的所有客户(表 a),无论他们在特定日期范围内是否有发票(表 b)。我的两次尝试都获得了该期间唯一拥有发票的客户:

select b.clientname,a.* from invdata a
   left join clidata b on a.clidataid=b.recordid
      where b.recstatus=1 and b.isactive=1
      and a.reccreate between '2015-04-01 00:00:00' and '2015-04-30 23:59:59';

或者

select a.clientname,b.* from clidata a
   left join invdata b on a.recordid=b.clidataid
      where a.recstatus=1 and a.isactive=1
      and b.reccreate between '2015-04-01 00:00:00' and '2015-04-30 23:59:59';

请提供一点帮助。谢谢!!

最佳答案

与where条件的左连接是内连接,会根据where条件过滤数据,您可能需要将where条件移至连接条件

  select b.clientname,a.* from invdata a
  left join clidata b on a.clidataid=b.recordid
  and b.recstatus=1 and b.isactive=1
  and a.reccreate between '2015-04-01 00:00:00' and '2015-04-30 23:59:59';

关于Mysql 左连接未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29460497/

相关文章:

MySQL如何制作FULL OUTER

mysql - 在 Heroku 上使用 Jaws Maria DB 的 Laravel 应用程序出现 MYSQL 错误

mysql - 选择其值与第二个表中多行中的任意一行相匹配的行

sql - 连接具有两个任务列表和用户列表的表

sql - Oracle 返回的左连接表达式和行数

sql - 左连接与Where子句

多个表每周的 SQL 计数摘要

php - 如何通过一个数据库连接将 mysql 结果存储在不同的单独变量中?

mysql - 从 MySQL 中的其他数据库链接表

mysql - 连接多个表并使用自连接