mySql 查询给了我错误的结果
mySql query gives me wrong results
我有以下 table 名为 question:
`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
我正在尝试构建条件查询,即用户可以在我的搜索表单中选择搜索:
类别(问题类别 ID)
法律形式 (legalformID)
从日期(questionAnsweredOnDate)
迄今为止(questionAnsweredOnDate)
搜索字词
用户可以将所有字段留空,也可以使用所有字段。
更多解释:
Category (questioncategoryID) - 如果将其留空则表示他想查看所有类别的问题,否则他只想查看特定类别的问题。
法律形式 (legalformID) - 如果留空则表示他想查看所有法律形式的问题,否则他只想查看具有特定 legalformID 的问题
From Date (questionAnsweredOnDate) 仅在此日期之后回答的问题(他可以将此字段留空)
截至日期 (questionAnsweredOnDate) 仅在该日期之前回答的问题(他可以将此字段留空)
Search Term 如果不是空白搜索词应该在:questionTitle OR in questionSummary OR in questionText(允许他将此字段留空)
我正在尝试通过以下查询获取数据:
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
但是这个查询 returns 我的问题属于类别 5,10 和 7 以及 legalformID 为 0,3 和 16 的问题....
如您所见,我什至没有尝试使用日期,因为即使没有日期我也无法使查询正常工作。所以请在您的解决方案中包含日期。
据推测,您打算:
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%'
)
混合使用 AND
和 OR
时,请在 WHERE
中使用括号。
我有以下 table 名为 question:
`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
我正在尝试构建条件查询,即用户可以在我的搜索表单中选择搜索:
类别(问题类别 ID) 法律形式 (legalformID) 从日期(questionAnsweredOnDate) 迄今为止(questionAnsweredOnDate) 搜索字词
用户可以将所有字段留空,也可以使用所有字段。
更多解释:
Category (questioncategoryID) - 如果将其留空则表示他想查看所有类别的问题,否则他只想查看特定类别的问题。
法律形式 (legalformID) - 如果留空则表示他想查看所有法律形式的问题,否则他只想查看具有特定 legalformID 的问题
From Date (questionAnsweredOnDate) 仅在此日期之后回答的问题(他可以将此字段留空)
截至日期 (questionAnsweredOnDate) 仅在该日期之前回答的问题(他可以将此字段留空)
Search Term 如果不是空白搜索词应该在:questionTitle OR in questionSummary OR in questionText(允许他将此字段留空)
我正在尝试通过以下查询获取数据:
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
但是这个查询 returns 我的问题属于类别 5,10 和 7 以及 legalformID 为 0,3 和 16 的问题....
如您所见,我什至没有尝试使用日期,因为即使没有日期我也无法使查询正常工作。所以请在您的解决方案中包含日期。
据推测,您打算:
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%'
)
混合使用 AND
和 OR
时,请在 WHERE
中使用括号。