我试图在表中插入一行,但前提是表中不存在 X 和 Y 的组合,所以我四处搜索并最终提出了这个查询,但它什么也没做,并且没有抛出任何错误。
INSERT INTO `tiles` (`TileID`, `Type`, `X`, `Y`)
SELECT UUID(), (FLOOR(RAND() * 4)), 0, 0 FROM `tiles`
WHERE NOT EXISTS (SELECT 1 FROM `tiles` WHERE `X`=0 AND `Y`=0) LIMIT 1;
非常感谢任何帮助。
最佳答案
一个可能的解决方案可能是在 (x, y)
上添加 UNIQUE
约束
ALTER TABLE tiles ADD UNIQUE (x, y);
INSERT IGNORE INTO tiles VALUES (UUID(), (FLOOR(RAND() * 4)), 0, 0);
INSERT IGNORE INTO tiles VALUES (UUID(), (FLOOR(RAND() * 4)), 0, 0);
这里是SQLFiddle 演示
关于MySQL INSERT 与 SELECT 语句不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17768702/