我所试图做的,用java是:是否可以使用SQL Case语句来测试是否应该使用Join语句?
- 访问数据库
- 读取表 “Target_stats”
- 如果字段 “threat_level”= 0的记录,doAction1
- 如果字段 “threat_level”> 0,得到另一个表 “Attacker_stats” 附加字段和doAction2
- 读取下一个记录
现在我拥有了我需要的所有东西,只是一个经过深思熟虑的SQL语句,只允许我只通过一次数据库,如果这不起作用,我怀疑我需要使用两个单独的SQL语句并每秒通过一次数据库时间。我对case语句没有清楚的理解,所以我只会使用if语句提供伪代码。
SELECT A.1, A.2, A.3
if(A.3 > 0){
SELECT A.1, A.2, A.3, B.1, B.3
FROM A
JOIN B
ON A.1 = B.1
}
FROM A
任何人都可以阐明我的情况吗?
编辑:谢谢您的时间和精力。我理解你的两个意见,我相信我正朝着正确的方向走,但我仍然遇到一些麻烦。我之前并不了解SQLfiddle,所以现在我已经提前做了一个示例数据库并试图证明我的目的。这里是链接:http://sqlfiddle.com/#!3/ea108/1我想在这里做什么是选择target_stats.server_id,target_stats.target,target_stats.threat_level其中interval_id = 3,如果threat_level> 0我想检索attack_stats.attacker,attack_stats.sig_name其中interval_id = 3 。再次,谢谢你的时间和精力,这对我来说非常有用
编辑:经过一番修改之后,我找到了答案。谢谢你的帮助
SQL是*不是程序代码。如果您声明了两种不同的“操作”,那么如果有两个不同的查询,您的意图可能会更清晰。我不知道这些查询有多复杂,但如果它们如示例所示那样简单,db命中可能甚至不会引起显着的性能差异。纯粹的猜测,但只是一个想法... – Ocelot20