0
私は書き込みしようとしているクエリの入力パラメータを持っています。基本的にはif mostRecentSnapshot == true
ですが、実行したプロセス(基本的にはwhere max(creationDate)
)とif mostRecentSnapshot == false
から最新のレコードのみを選択し、次にselect creationDate
と通常の列を選択します。入力パラメータに基づいたクエリテーブル
私にはfrom
句にif
というステートメントがありますが、それは可能だとは思いません。通常はCTEを使用しますが、それらはMySQLには存在しません。
これを達成する最も良い方法は何ですか?
それはこの線に沿って何かのようになります。
SELECT
CASE mostRecentSnapshot WHEN FALSE THEN
(
processauditheader.creationDate as processCreationDate,
processauditheader.processName,
processauditheader.processType,
processauditheader.processHost,
processauditheader.processDatabase,
processauditheader.tableAudited,
processauditheader.processInvokedByName,
processauditheader.processInvokedByType,
processauditheader.processInvokedByDatabase,
processauditheader.processIntervalValue,
processauditheader.processIntervalField,
processauditheader.auditScenarios,
processaudititerationdetail.creationDate as iterationDate,
processaudititerationdetail.connectionId,
processaudititerationdetail.processDate,
processaudititerationdetail.tableRowCount,
processaudititerationdetail.tableRowCountLastDay,
processaudititerationdetail.previousProcessAuditIterationDetailID,
processauditmetricdetail.creationDate,
processauditmetricdetail.processAuditIterationDetailID,
processauditmetricdetail.auditMetric,
processauditmetricdetail.auditTotal,
processauditmetricdetail.auditExample
)
WHEN TRUE THEN
(
((SELECT MAX(processaudititerationdetail.creationDate) as maxSnapshot,
processaudititerationdetail.id
from reporting_audit.processaudititerationdetail
group by processaudititerationdetail.creationDate) mostRecent
JOIN reporting_audit.processaudititerationdetail ON mostRecent.id = processaudititerationdetail.id)
)
END
FROM reporting_audit.processauditheader
JOIN processaudititerationdetail ON processaudititerationdetail.processAuditHeaderID = processauditheader.id
LEFT JOIN processauditmetricdetail ON processauditmetricdetail.processAuditIterationDetailID = processaudititerationdetail.id
は、ここに私が思い付いたものです:。。。 '' '選択ヘッダ*、反復*、メトリック* reporting_audit.processauditheaderヘッダ からiteration.processAuditHeaderID = header.id にprocessaudititerationdetail反復に参加processauditmetricdetailメトリックに参加左metric.processAuditIterationDetailID = iteration.id ここで(not @ mostRecentSnapshot)または iteration.processAuditHeaderId) '' ' – Ted