如果存在,请选择else inser,mysql

pw136qt2  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(260)

我的sql语句有问题,在这里已经提出的问题中找不到解决方法。
我的声明是:

IF EXISTS (SELECT LastLogin FROM user WHERE Email = @mail) 
SELECT LastLogin FROM user WHERE Email = @mail 
ELSE INSERT INTO 
`user`(LastLogin) VALUES ('00.00.0000') WHERE  Email = @mail 
END IF

尝试:

CREATE Procedure lastlogin()
  begin
   IF EXISTS (SELECT LastLogin FROM fenutzer WHERE Email = @mail)  
      SELECT LastLogin FROM user WHERE Email = @mail
  ELSE
      INSERT INTO `user`(LastLogin) VALUES ('00.00.0000') WHERE  Email = @mail
 END IF;

call lastlogin()

lastlogin的数据类型为“datetime”。
我在visualstudio项目(c#)中的sql命令中有代码。我得到的错误是,在我的sql语法(正确的语法旁边的“else insert in”)中有错误。但我不知道怎么了

mitkmikd

mitkmikd1#

有件事要考虑。我使用的是之前发布的一个问题中的数据集,但是对于这个目的来说它已经足够好了。。。
考虑以下数据集。。。

SELECT * FROM my_table;
+----+-----------+
| id | member_id |
+----+-----------+
|  1 |         1 |
|  2 |         2 |
|  3 |         1 |
|  4 |         2 |
|  5 |         3 |
|  6 |         1 |
|  7 |         2 |
|  8 |         4 |
|  9 |         1 |
| 10 |         3 |
| 11 |         4 |
| 12 |         1 |
| 13 |         2 |
| 14 |         3 |
| 15 |         5 |
| 16 |         5 |
+----+-----------+

假设我们需要给定成员的最新id。我们可以这样做。。。

SELECT CASE WHEN member_id = 5 THEN id ELSE 0 END last_id FROM my_table ORDER BY id DESC LIMIT 1;
+---------+
| last_id |
+---------+
|      16 |
+---------+

…如果成员不存在。。。

SELECT CASE WHEN member_id = 6 THEN id ELSE 0 END last_id FROM my_table ORDER BY id DESC LIMIT 1;
+---------+
| last_id |
+---------+
|       0 |
+---------+

相关问题