JLa*_*nce 2 mysql sql jsp servlets
我正在制作一个表格生成器作为学校项目。在 MySQL 中,我有 3 个表,分别是 process、operation、score。一切看起来都很好,直到我在 Web 应用程序中测试了我的“添加列”按钮。以前保存的数据应该被正确读取,但也包括格式中的新列,问题是以前查询的数据不包括新表的任何值,所以我打算如果没有找到记录,它会返回 0 分,试过IFNULL & COALESCE 但没有任何反应(也许我只是用错了)
score - scoreID、score、processID、operationID、scoreType(分数类型为 SELF、GL、FINAL)
ps = (PreparedStatement)dbconn.prepareStatement("SELECT score FROM score WHERE processID=? and operationID=? and type=?ORDER BY processid");
这是一个小样本的图片http://i50.tinypic.com/2yv3rf9.jpg
IFNULL不起作用的原因是它只对值有影响。没有行的结果集没有值,因此它什么也不做。
首先,在客户端执行此操作可能比在服务器上执行更好。但是,如果您必须在服务器上执行此操作,我可以想到几种方法。
尝试这个:
SELECT IFNULL(SUM(score), 0) AS score
FROM score
WHERE processID=? and operationID=? and type=?
ORDER BY processid
Run Code Online (Sandbox Code Playgroud)
该SUM恰好一行将返回保证。
如果您需要在表包含多个匹配行时返回多行,那么您可以使用它(为简单起见省略 ORDER BY):
SELECT score
FROM score
WHERE processID = ? and operationID = ? and type = ?
UNION ALL
SELECT 0
FROM (SELECT 0) T1
WHERE NOT EXISTS
(
SELECT *
FROM score
WHERE processID = ? and operationID = ? and type = ?
)
Run Code Online (Sandbox Code Playgroud)