SELECT *
FROM myTable m
WHERE m.userId = :userId
AND m.X = (SELECT MAX(X)
FROM myTable m
WHERE m.userId = :userId
AND m.contactNumber = :contactNumber)";
問題は、このような行がなく、実行が失敗した場合にステートメントの第2部がNULLと評価されることです。そのような場合は結果を空にします。サブクエリでnullを処理する
この問題を解決する1つの方法は、高価なfilesort(order by)を実行し、コードレベルで必要なフィールドをフェッチすることです。この問題の解決策はありますか?
私の悪いところは、IFNULL(mysqlとhibernateのSQLサーバのISNULLに相当)について知りませんでした。だから、X =(IFNULL(max(X)、 ''を選んで) – r15habh