2014-02-24 187 views
0

返回错误的值使用下面的查询,我需要在本月“02”,只显示标有年份“2014”的记载:MySQL查询在where子句

SELECT DISTINCT 
c.sno, 
c.cCode, 
c.caseNumber, 
c.dateOriginalInstitution, 
c.date_remanded, 
c.plaintiff, 
c.respondant 
FROM 
    cases c, 
    chronologicallists ch 
WHERE (
(YEAR(dateOriginalInstitution) = '2014' AND MONTH(dateOriginalInstitution) = '02') 
OR 
(YEAR(dateOfTransferInstituion) = '2014' AND MONTH(dateOfTransferInstituion) = '02') 
OR 
(YEAR(date_restored) = '2014' AND MONTH(date_restored) = '02') 
) 
AND c.inTheCourt = '578' AND c.sno = ch.caseSno 

enter image description here

我m仍然在2011和2012年的结果集?

请帮我这个。

+2

显示'dateOfTransferInstituion'列,我猜它必须有“2014”记录。 – Rikesh

+0

也许你应该使用'LIKE'子句中有比较,如果'dateOfTransferInstitution'也有类似的期待日期戳'dateOriginalInstitution'例如'dateOriginalInstitution LIKE“2014-02 - %”' – pythonian29033

回答

5

这是因为你的OR条件。

你可能得了year2014在任何dateOfTransferInstituiondate_restored列,但不是在dateOriginalInstitution

+0

因为我已经检查了我的列有在所有其他日期列中,只有dateOriginalInstaitution列具有正确的日期值时,它只不过是0000-00-00而已?所以,它应该只显示与dateOriginalInstitution列相关的记录。 –

+1

在结果集中显示带有所述列的示例记录。例如查询:'其中2014年(年(dateOriginalInstitution),一年(dateOfTransferInstituion),一年(date_restored))和 '02' 在(本月(dateOriginalInstitution),月(dateOfTransferInstituion),月(date_restored选择dateOriginalInstitution,dateOfTransferInstituion,从案件date_restored ))' –

+0

是的,你是对的,现在的岩石...感谢的FancyPants –

0

有负责该dateOriginalInstitutiondateOfTransferInstituiondateOfTransferInstituion 3列,你应该检查

使用AND代替的OR和心灵,以显示dateOfTransferInstituion让你知道,如果 他们通过你的WHERE条件。

WHERE (
(YEAR(dateOriginalInstitution) = '2014' AND MONTH(dateOriginalInstitution) = '02') 
AND 
(YEAR(dateOfTransferInstituion) = '2014' AND MONTH(dateOfTransferInstituion) = '02') 
AND 
(YEAR(date_restored) = '2014' AND MONTH(date_restored) = '02') 
+0

没有,当我使用“ADN”没有要显示的,因为我会那么where子句中搜索相同的值什么,得到的记录将显示为空白。 –