簡體   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