stevenjin 2024-04-22 13:58 采纳率: 96.8%
浏览 60
已结题

IF NOT EXISTS不能在mysq使用吗

1.以下语句,不能在mysql5.7编译通过。
2.中间不报错,但加了IF NOT EXISTS之后报错。
求正确简洁的用法:


IF NOT EXISTS(SELECT * FROM information_schema.COLUMNS 
              WHERE TABLE_NAME='Student' AND COLUMN_NAME='mobile') 
THEN ALTER Student ADD COLUMN mobile22 VARCHAR(50) DEFAULT NULL; 
END IF;
  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2024-04-22 13:58
    关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    在MySQL中,IF NOT EXISTS语法只能用于SELECT、CREATE和DROP语句中,而不能用于ALTER语句中。因此,你需要采用其他方法来达到相同的效果。

    以下是一种可能的解决方案:

    1. 查询Student表中是否已经存在名为mobile的列:

    SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_NAME='Student' AND COLUMN_NAME='mobile';

    1. 如果查询结果为0,则说明不存在这样的列。此时,可以执行ALTER TABLE语句添加该列:

    ALTER TABLE Student ADD COLUMN mobile VARCHAR(50) DEFAULT NULL;

    1. 如果查询结果不为0,则说明该列已经存在,无需执行任何操作。

    注意:新添加的列名应该与查询中的列名相同(即mobile),否则会出现语法错误。

    修改后的正确代码为:

    SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_NAME='Student' AND COLUMN_NAME='mobile';

    IF ((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_NAME='Student' AND COLUMN_NAME='mobile') = 0) THEN ALTER TABLE Student ADD COLUMN mobile VARCHAR(50) DEFAULT NULL; END IF;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月18日
  • 已采纳回答 5月10日
  • 创建了问题 4月22日