我正在用Java编写一个应用程序,该应用程序接收请求并将其保存到文件中,然后它可以搜索旧请求。
我开始升级我的应用程序以使用MySQL而不是普通的Txt文件。
我正在寻找一种通过以下方式查询数据库的方法:
我正在寻找在(特定日期)-首次搜索中打开的请求,其中包含单词xxx-二次搜索
我发现此查询:
SELECT * FROM requestserverdb.closedrequests WHERE ClosingTimeStamp LIKE "%2014-09-01%"
OR ClosingTimeStamp LIKE "%2014-09-02%" ;
这给了我在这些日期中创建的所有行,我希望查询仅返回这些结果中也包含特定单词的行...
例如 :
该查询将返回:
1,bannaba,我想活着,2014-09-01
6,苹果,胡宇,2014-09-02
7,芒果,沟在心,2014-09-02
我需要一个查询,该查询将只返回在其中一列中包含单词“ apple”的行:
6,苹果,胡宇,2014-09-02
您的查询是搜索日期时间的一种非常糟糕的方法。以下内容要好一些:
SELECT *
FROM requestserverdb.closedrequests
WHERE date(ClosingTimeStamp) = '2014-09-01' OR date(ClosingTimeStamp) = 2014-09-02';
如果时间戳没有时间部分,则删除该date()
功能。仅like
在字符串上使用。
更好的方法是:
SELECT *
FROM requestserverdb.closedrequests
WHERE ClosingTimeStamp >= '2014-09-01' AND ClosingTimeStamp < 2014-09-03';
后者将允许引擎在上使用索引ClosingTimeStamp
。
如果要添加其他条件,只需添加它:
SELECT *
FROM requestserverdb.closedrequests
WHERE ClosingTimeStamp >= '2014-09-01' AND ClosingTimeStamp <= 2014-09-03' AND
col2 = 'Apple';
SQL没有内置的概念来保存另一个查询的查询结果。您可以实现这样的功能,但是您的应用程序可能不需要它。您可以只在where
子句中添加条件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句