Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql-在CONCAT的子查询中使用if_Mysql - Fatal编程技术网

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

mysql-在CONCAT的子查询中使用if,mysql,Mysql,我试图编写一个查询来更正表中DATETIME字段中的错误,但是我的子查询可以返回NULL作为transactiondetails,并且CreateDate字段需要有一个有效值 我当前的查询是: 更新TransactionHeaders H SET CreateDate= 海螺 日期从TransactionDetails中选择CreateDate,其中TransactionUID=H.UID按TransactionUID分组, ' ', TIMECreateDate 其中UID>0; 我想用 从T

我试图编写一个查询来更正表中DATETIME字段中的错误,但是我的子查询可以返回NULL作为transactiondetails,并且CreateDate字段需要有一个有效值

我当前的查询是:

更新TransactionHeaders H SET CreateDate= 海螺 日期从TransactionDetails中选择CreateDate,其中TransactionUID=H.UID按TransactionUID分组, ' ', TIMECreateDate 其中UID>0; 我想用

从TransactionDetails中选择CreateDate,其中TransactionUID=H.UID按TransactionUID分组 如果不为NULL,则为DATECreateDate

我一直在尝试使用IF来实现这个目的,但是我在写一些有用的东西时遇到了问题


还有一件事,TransactionDetails通过TransactionUID 1对多引用TransactionHeader。GROUP BY是否保证只返回一个结果?

这是正确的选择

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'甚至datenow

为什么不只对空记录运行更简单的更新查询?还有一个是针对CreateDate出错的人的?您不必总是将所有逻辑组合到一个查询中。这不应该影响所有行吗?98行受影响的行匹配:45922已更改:98警告:0忘记它,它正在正常工作。它只会在不同的情况下更新。正当