mysql - 在子查询中使用if到CONCAT

时间:2012-06-29 10:40:04

标签: mysql

我尝试编写一个查询来纠正表中DATETIME字段中的错误,但我的子查询可以返回NULL作为transactiondetails,而CreateDate字段需要有一个有效值。

我目前的查询是:

UPDATE transactionsheaders H SET CreateDate = 
    CONCAT(
    DATE((SELECT CreateDate FROM transactionsdetails WHERE TransactionUID=H.UID GROUP BY TransactionUID)),
    ' ',
    TIME(CreateDate)) 
WHERE UID>0;

我希望使用

的结果
SELECT CreateDate FROM transactionsdetails WHERE TransactionUID=H.UID GROUP BY TransactionUID

如果它不是 NULL DATE(CreateDate)则为其他。

我一直在尝试使用 IF 来实现此目的,但我在撰写有效的内容时遇到了问题......

还有一件事, transactionsdetails 是指 transactionsheaders TransactionUID (1到多个)。 GROUP BY 是否保证只返回一个结果?

1 个答案:

答案 0 :(得分:1)

这是正确的事情

UPDATE transactionsheaders H
SET CreateDate = CONCAT(DATE(ifnull((SELECT
                       CreateDate
                     FROM transactionsdetails
                     WHERE TransactionUID = H.UID
                     GROUP BY TransactionUID)),'2012-02-02'), ' ', TIME(CreateDate))
WHERE UID > 0;

您可以设置任何默认值为'2012-02-02'或甚至日期(now())