MySQL:选择不同的东西,如果选择不返回任何行

时间:2015-01-15 21:46:48

标签: mysql

SELECT timestamp FROM table WHERE id = '10'

是否可以使上面的SELECT返回时间戳00:00:00'如果没有' 10'在桌子上?

3 个答案:

答案 0 :(得分:1)

...是

使用If Exist / else语句。你的其他人可以返回时间戳。

答案 1 :(得分:1)

如果你想选择它,而不是用if-else或php / etc处理它,下面的技巧应该有效:

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;

(请注意,它确实是黑客攻击,所以你应该有充分的理由)

[更新]

如果匹配的id且其时间戳为NULL,COALESCE也会将其覆盖为'0000-00-00 00:00:00'。如果这是一个问题并且保持NULL值很重要,那么IF(t1.id IS NULL, t2.tst_hack, t1.timestamp)的效果优于COALESCE

答案 2 :(得分:0)

如果您使用的是MySQLi:

<?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 ... 

}