mysql - 查询的意外行为

标签 mysql indexing

这个特定的查询应该将用户输入到数据库中。

此查询并不总是将名字和姓氏字段的值与其他字段一起插入。对于一些插入,名字和姓氏是空的,对于其他插入,它按预期工作。

INSERT INTO `users` (mobile, passwordHash, firstname, lastname, ent_id, email )
VALUES ('913800341127', '678a1491514b7f1006d605e9161946b1', 'nat', 'sam', '108', NULL)
ON DUPLICATE KEY UPDATE `firstname` = VALUES(firstname),`lastname` = VALUES(lastname)

相关信息:

CREATE TABLE `users` (
 `id` int(11) NOT NULL auto_increment,
 `tag` varchar(5) NOT NULL default 'ind',
 `username` varchar(50) default NULL,
 `firstname` varchar(100) default NULL,
 `lastname` varchar(100) default NULL,
 `passwordhash` varchar(255) NOT NULL,
 `secretq` varchar(255) default NULL,
 `secreta` varchar(100) default NULL,
 `email` varchar(50) default NULL,
 `mobile` varchar(13) default NULL,
 `last_login` datetime default NULL,
 `ent_id` bigint(20) NOT NULL default '1',
 `is_inactive` tinyint(1) NOT NULL COMMENT 'Whether the user is active or not',
 PRIMARY KEY  (`id`),
 UNIQUE KEY `mobile_2` (`mobile`,`ent_id`),
 UNIQUE KEY `email_2` (`email`,`ent_id`),
 KEY `username` (`username`),
 KEY `ent_id` (`ent_id`,`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

最佳答案

语法错误应该是:

ON DUPLICATE KEY UPDATE firstname = 'nat',lastname = 'sam'

关于mysql - 查询的意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5566887/

相关文章:

php - 如何在 PHP 分页中正确使用 COUNT?

mysql - 为 MySQL 配置更好的索引选择

seo - 如何索引动态 url 页面

Excel 匹配 - 最大、第二大、第三大和最低、第二低等,没有重复,包括空格和相同的分数

mysql - InnoDB -> Int 与 VarChar 的键数

php - 在选择查询中需要帮助

mysql - Kamailio MySql 到 redis

mysql - 包含用户已保存产品的所有产品列表

python - Python中的 `board[x, y]`和 `board[x][y]`有区别吗?

mysql - 将数据插入mysql字段为空