我有一个名为的下表
`questionID` int(11) NOT NULL AUTO_INCREMENT,
`questioncategoryID` int(11) NOT NULL,
`questionstatusID` int(11) NOT NULL,
`organizationID` int(11) NOT NULL,
`legalformID` int(11) DEFAULT NULL,
`questionProtocolID` varchar(45) DEFAULT NULL,
`questionDisplayedRecordID` int(11) NOT NULL,
`questionTitle` text NOT NULL,
`questionSummary` text,
`questionText` longtext NOT NULL,
`questionAnswerSummary` text,
`questionAnswerText` longtext,
`questionMetaTags` text,
`questionAskedBy` int(11) NOT NULL,
`questionAnsweredBy` int(11) DEFAULT NULL,
`questionAskedOnDate` datetime NOT NULL,
`questionAnsweredOnDate` datetime DEFAULT NULL,
`questionAskedFromIp` varchar(255) NOT NULL我正在尝试构建条件查询,即用户可以在我的搜索表单中选择搜索:
类别(questioncategoryID)法律形式(legalformID)从日期(questionAnsweredOnDate)到日期(questionAnsweredOnDate)搜索术语
用户可以将所有字段保留为空白,也可以全部使用.。
更多解释:
我试图通过以下查询获取数据:
SELECT * FROM (`question`)
WHERE `questioncategoryID` = 5
AND `legalformID` = 16
AND `questionTitle` LIKE '%Lorem Ipsum%'
OR `questionSummary` LIKE '%Lorem Ipsum%'
OR `questionText` LIKE '%Lorem Ipsum%'
OR `questionMetaTags` LIKE '%Lorem Ipsum%'
ORDER BY `questionAskedOnDate` DESC但此查询返回属于类别5、10和7的问题,以及具有legalformID 0、3和16.的问题.
正如您所看到的,我甚至没有尝试使用日期,因为即使没有日期,我也无法使查询正确工作。所以请把日期包括在你的解决方案中。
发布于 2016-03-30 11:22:55
想必,你打算:
WHERE `questioncategoryID` = 5 AND
`legalformID` = 16 AND
(`questionTitle` LIKE '%Lorem Ipsum%' OR
`questionSummary` LIKE '%Lorem Ipsum%' OR
`questionText` LIKE '%Lorem Ipsum%' OR
`questionMetaTags` LIKE '%Lorem Ipsum%'
)当您将WHERE和AND和OR混合时,请在OR中使用括号。
https://stackoverflow.com/questions/36307262
复制相似问题