【问题标题】:Insert different content IF SQL table contains rows [duplicate]如果 SQL 表包含行,则插入不同的内容
【发布时间】: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

标签: php mysql sql


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2014-09-27
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多