MySQL INSERT 与 SELECT 语句不执行任何操作

标签 mysql select insert where-clause

我试图在表中插入一行,但前提是表中不存在 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

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/

相关文章:

php - 统计mysql表中的记录数

mysql - 获取每组分组结果的前n条记录

mysql - 无法将值数组存储到 Rails 2.x 中的单个数据库表列?

mysql - 为什么我的 MySQL 版本不同?

php - MySql 插入二进制数据到数据库没有错误

mysql - 在 MYSQL 中为 TIMEDATE 获取 NULL 值

mysql - 如何在 Perl 中构建具有灵活列数的动态 MySQL INSERT 语句?

c# - $select 和 $expand 中断 ODataQueryOptions——如何修复?

c# - Umbraco,按名称和数据类型获取节点

php - MySQL 使用 EXISTS 选择计数