如果 SQL 表包含行,则插入不同的内容

Posted

技术标签:

【中文标题】如果 SQL 表包含行,则插入不同的内容【英文标题】:Insert different content IF SQL table contains rows [duplicate] 【发布时间】:2021-08-22 20:22:15 【问题描述】:

我正在尝试根据 SQL 表是否有行来插入不同的内容。到目前为止,查询将检查sortingOrder 的最大值是多少,然后+ 1。但是,如果表中没有行,则此查询将中断。如何实现 if 语句来检查表是否没有行,然后是否没有将排序顺序设置为“1”。

INSERT INTO faq (question, answer, sortingOrder) 
VALUES ('$questionData', '$answerData', (SELECT MAX(sortingOrder) FROM faq C) +1)

谢谢

【问题讨论】:

你为什么要自己增加sortingOrder而不是使用AUTO_INCREMENT 【参考方案1】:

最好的解决方案是使sortingOrder 成为AUTO_INCREMENT 列。数据库将自动分配值,为每一行递增。

如果由于某种原因不能这样做,您可以检查子查询是否返回 NULL 并将其替换为 1

INSERT INTO faq (question, answer, sortingOrder) 
SELECT '$questionData', '$answerData', IFNULL(MAX(sortingOrder)+1, 1)
FROM faq

【讨论】:

以上是关于如果 SQL 表包含行,则插入不同的内容的主要内容,如果未能解决你的问题,请参考以下文章

当某些行已经存在时如何防止SQL插入? [复制]

如果 Databricks 或 Spark SQL 中存在表,则插入

如果不存在则插入 Spark SQL 中的其他更新

如果不存在则插入数据的过程pl sql

如果任何列与另一个表中的匹配行不同,如何插入行

使用不同的表触发检查条件,然后根据结果更改插入行的值