MySQL:如果select不返回任何行,则选择其他内容
如果表中没有“10”的id,是否可以让上面的选择返回“0000-00-00 00:00:00”的时间戳?是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
使用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;