MySQL SELECT 语句如果为空 [重复]

Posted

技术标签:

【中文标题】MySQL SELECT 语句如果为空 [重复]【英文标题】:MysQL SELECT statement if empty [duplicate] 【发布时间】:2017-10-19 09:22:51 【问题描述】:

我在一些我认为应该很容易解决的问题上有点挣扎。

我首先检查数据库是否存在。如果日期不存在,我希望它插入日期,但我不确定如何构造 IF 语句部分。非常感谢

$date='2017-05-13';
$select_date = mysqli_query($link, "SELECT * from `marker` WHERE `date`='$date' ");

$insert_date = mysqli_query($link, "INSERT INTO `marker` (`date`,`value`) VALUES ('$date','1') ");

【问题讨论】:

检查第一次查询后返回的行数,如果是0,运行插入 使用mysqlON DUPLICATE KEY语法 SO 并不是一个真正的教程网站。有很多网站可以做到这一点。 dup 目标提供 PDO 代码而不是 mysqli。如果您刚刚开始学习,请切换到 PDO。 其次,如该答案中所述,不要执行 SELECT 后续插入 【参考方案1】:

一般来说,对于这种类型的操作,您希望使用on duplicate key update。这从唯一索引开始:

CREATE UNIQUE INDEX unq_marker_date ON marker(date);

那么数据库保证每个日期只有一行。然后你可以这样插入:

INSERT INTO `marker` (`date`, `value`)
    VALUES ('$date', '1')
    ON DUPLICATE KEY UPDATE `date` = VALUES(`date`);

ON DUPLICATE KEY 部分除了防止重复日期的错误之外什么都不做。

【讨论】:

谢谢我已经实现了这个,它可以按要求工作。很遗憾我的问题被否决了,因为其他人认为它太简单了。再次感谢您提供此代码!

以上是关于MySQL SELECT 语句如果为空 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

mysql 查询时间范围内的数据该怎么写select语句,如果结束时间为空则不判断结束时间

[学习记录]MySQL之初级查询语句(select,where)

mysql的查询语句union是啥意思

MYSQL如何判断如果某字段有重复就取其中一条?

如何用SQL语句来判断查询结果为空?

Mysql select查询常用关键字