Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL使用附加的like条件左连接_Mysql_Left Join_Sql Like - Fatal编程技术网

MySQL使用附加的like条件左连接

MySQL使用附加的like条件左连接,mysql,left-join,sql-like,Mysql,Left Join,Sql Like,该计划是从表工作向左连接到表项目。在此之后,我想使用通配符工作筛选结果。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

该计划是从表工作向左连接到表项目。在此之后,我想使用通配符工作筛选结果。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上搜索了一下,但总是在连接中发现类似的问题,但这不是我想要的。LIKE是一个附加条件

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

我们应该做到这一点。您希望按项目ID加入项目,但按日期筛选工作。因此,应在WHERE部分进行过滤。

根据我对您问题的理解,我认为附加条件应包含在
WHERE
-子句中:

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

如果是这种情况,请使用
内部联接