繁体   English   中英

MySQL左连接并带有其他类似条件

[英]MySQL left join with additional like condition

该计划是要保留从表工作到表项目的联接。 之后,我想用通配符work.workdate ='2013-12-%'过滤结果-结果应该是本月与项目结合完成的工作

表工作

CREATE TABLE IF NOT EXISTS `work` (
  `idwork` int(11) NOT NULL AUTO_INCREMENT,
  `iduser` int(11) NOT NULL,
  `idproject` int(11) NOT NULL,
  `workdate` varchar(45) NOT NULL,
  `duration` varchar(45) NOT NULL,
  `description` varchar(45) NOT NULL,
  PRIMARY KEY (`idwork`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

表项目

CREATE TABLE IF NOT EXISTS `project` (
  `idproject` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) NOT NULL,
  `id` int(11) DEFAULT NULL,
  PRIMARY KEY (`idproject`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

声明

SELECT * FROM work LEFT JOIN project ON work.idproject=project.idproject AND work.workdate LIKE '2013-12-%';
  • 输出:每行。 2013年12月以外的行在项目部分中具有空值
  • 预期产量:仅从2013年12月开始

那我的问题在哪里呢? 我必须使用方括号之类的东西吗? 我在Stackoverflow上进行搜索,但始终发现JOIN中的LIKE存在问题,但这不是我想要的。 像是附加条件。

SELECT 
    *
FROM
    work
LEFT JOIN
    project
ON
    work.idproject = project.idproject
WHERE
    work.workdate LIKE '2013-12-%';

应该可以。 您想按项目ID加入项目,但按日期过滤工作。 因此,应在WHERE部分进行过滤。

据我了解你的问题,我认为附加条件应进入WHERE -clause:

SELECT * 
FROM work 
LEFT JOIN project ON work.idproject=project.idproject 
WHERE work.workdate LIKE '2013-12-%';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM