题
我碰巧有两个列具有与两个SQL保留单词,键和值相同的名称。使用Select语句时,我可以创建一个表别名并以这种方式解决。
现在,我正在尝试插入数据,似乎您无法在插入语句中创建表格别名。
INSERT INTO attributeStrings ats
(ats.ItemID,ats.Key,ats.Value)
VALUES (3,'Categories','TechGUI')
我在 'ats (ats.ItemID,ats.Key,ats.Value) VALUES (3,'Categories','TechGUI')'
表示无法创建别名。
是否有任何方法可以在不重命名列键和价值的情况下解决此问题?
解决方案
使用后踢来逃避保留的单词。
INSERT INTO `attributeStrings` (`ItemID`, `Key`,`Value`) VALUES (3,'Categories','TechGUI')
看起来插入不支持别名。 看这里
编辑:好的,MySQL Ref在插入中没有别名
它确实有效
mysql> INSERT INTO `attributeStrings` (`ItemID`, `Key`,`Value`) VALUES (3,'Categories','TechGUI');
Query OK, 1 row affected (0.03 sec)
mysql> select * from attributeStrings;
+--------+------------+---------+
| ItemId | Key | Value |
+--------+------------+---------+
| 3 | Categories | TechGUI |
+--------+------------+---------+
1 row in set (0.00 sec)
其他提示
很容易成为 有智慧的人 基于您的问题
INSERT INTO attributeStrings
VALUES (3,'Categories','TechGUI');
/* if the table have more than 3 columns, fill-up every column then */
其他问题
拥有骆驼板毫无意义,因为Windows还不支持CASE敏感的文件名。
因此,您实际上可以在Linux/Mac中具有不同情况的同一张表,但在Windows上也不能
mysql> create table abc (id int(10)); Query OK, 0 rows affected (0.00 sec) mysql> create table abC (id int(10)); Query OK, 0 rows affected (0.01 sec)
似乎您无法在插入语句中创建表别名
某些SQL产品(例如SQL Server)确实允许这样做,但我不确定这是一件好事。
根据SQL的标准,别名应具有表现出来的效果,即 INSERT
(或任何其他更新的味道)到混叠桌上应使基础基础表不受影响。
在SQL Server中 INSERT
确实会影响基本的基础表,但我认为实际(不合规)效果是大多数SQL编码员在这种情况下会发生的事情。换句话说,一个有效的插入语句,我认为最初不会被认为是错误的,即使这是标准SQL应该使用的方式。
因此,我认为首先不这样做的情况,同时在技术上再次不符合标准,这是我认为的不可思议的。
不隶属于 StackOverflow