我有一个包含“userid”和“expired”列的会话表。我想检查是否存在具有给定用户 ID 且未过期的任何行,如果没有找到行,则插入新行。
我已经阅读了有关 INSERT IGNORE 的信息,但是 (userid + expired) 不能作为键,因为可能有多个行具有相同的用户(全部过期),我不能只有超过 1 个未过期的用户。
我试过这个,但无济于事('你有一个错误......'):
IF (SELECT 1 FROM sessions WHERE user = :user AND expired = 0) <> 1
INSERT INTO sessions (user) VALUES(:user)
(“过期”默认为 0)。mySQL 版本是 5。
更新。
我也试过这个:
IF NOT EXISTS(SELECT 1 FROM sessions WHERE user = 0 AND expired = 0)
INSERT INTO sessions (user) VALUES(0)
使用 HeidySQL 7。它也不起作用。mySQL 版本是 5.5。
更新2。我的陈述中的逻辑错误已修复。
问候,