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语句,如果结束时间为空则不判断结束时间