MySQL:如果select不返回任何行,则选择其他内容

MySQL:如果select不返回任何行,则选择其他内容,mysql,Mysql,如果表中没有“10”的id,是否可以让上面的选择返回“0000-00-00 00:00:00”的时间戳?是 使用If-Exist/else语句。您的else可以返回时间戳。如果您正在使用MySQLi: SELECT timestamp FROM table WHERE id = '10' 如果您想为它选择一个select,而不是使用If-else或从php/etc处理它,那么以下技巧应该可以奏效: <?php $result = mysqli_query($conn, "SELECT

如果表中没有“10”的id,是否可以让上面的选择返回“0000-00-00 00:00:00”的时间戳?


使用If-Exist/else语句。您的else可以返回时间戳。

如果您正在使用MySQLi:

SELECT timestamp FROM table WHERE id = '10'

如果您想为它选择一个select,而不是使用If-else或从php/etc处理它,那么以下技巧应该可以奏效:

<?php 

$result = mysqli_query($conn, "SELECT timestamp FROM table WHERE id = 10");

/* determine number of rows result set */
$row_cnt = mysqli_num_rows($result);

if ($row_cnt == 0) {

  echo '0000-00-00 00:00:00';

  //or store as a variable to use else where.

  $my_result = '0000-00-00 00:00:00';

} else {

  // else if there are results, do something ... 

}
(请注意,这确实是黑客行为,因此您应该有一个很好的理由)

[更新]


如果存在匹配id且其时间戳为空,
COALESCE
也会将其覆盖为“0000-00-00:00:00”。如果这是一个问题,保持空值很重要,那么
If(t1.id为NULL,t2.tst\u hack,t1.timestamp)
COALESCE

右连接万岁
SELECT COALESCE(t1.timestamp,t2.tst_hack) timestamp
FROM table t1
RIGHT JOIN (SELECT 10 as id, '0000-00-00 00:00:00' as tst_hack) t2 ON t1.id=t2.id;