删除表中记录,为什么提示找不到字段,肯定不是中文字符的问题。因为我已经 GB2312 了。除了中文,还有可能什么原因。
在下面的代码中,我的意图是:只要 LSB_RKZL 表的前四个字段等于 LSB_KCZL 表的前四个字段,则删除 LSB_RKZL 的记录。mysql> DELIMITER //mysql> DESCRIBE LSB_RKZL//
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| 品名 | char(255) | NO | PRI | | |
| 颜色 | char(255) | NO | PRI | | |
| 规格 | char(255) | NO | PRI | | |
| 单位 | char(255) | NO | PRI | | |
| 总量 | int(11) | YES | | NULL | |
+-------+-----------+------+-----+---------+-------+
5 rows in set (0.01 sec)mysql> DESCRIBE LSB_KCZL//
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| 品名 | char(255) | NO | PRI | | |
| 颜色 | char(255) | NO | PRI | | |
| 规格 | char(255) | NO | PRI | | |
| 单位 | char(255) | NO | PRI | | |
| 库存 | int(11) | YES | | NULL | |
+-------+-----------+------+-----+---------+-------+
5 rows in set (0.00 sec)mysql> SELECT * FROM LSB_RKZL//
+--------------+------+------+------+------+
| 品名 | 颜色 | 规格 | 单位 | 总量 |
+--------------+------+------+------+------+
| CP | | | | 12 |
| CP2 | | | | 5 |
| SQL 入门经典 | | | | 0 |
| 水杯 | 白 | | | 0 |
+--------------+------+------+------+------+
4 rows in set (0.00 sec)mysql> SELECT * FROM LSB_KCZL//
+------+------+------+------+------+
| 品名 | 颜色 | 规格 | 单位 | 库存 |
+------+------+------+------+------+
| CP | | | | 2 |
+------+------+------+------+------+
1 row in set (0.00 sec)mysql> delete from lsb_rkzl where
-> LSB_RKZL.品名 = LSB_KCZL.品名 AND
-> LSB_RKZL.颜色 = LSB_KCZL.颜色 AND
-> LSB_RKZL.规格 = LSB_KCZL.规格 AND
-> LSB_RKZL.单位 = LSB_KCZL.单位
-> //
ERROR 1054 (42S22): Unknown column 'LSB_KCZL.鍝佸悕' in 'where clause'
在下面的代码中,我的意图是:只要 LSB_RKZL 表的前四个字段等于 LSB_KCZL 表的前四个字段,则删除 LSB_RKZL 的记录。mysql> DELIMITER //mysql> DESCRIBE LSB_RKZL//
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| 品名 | char(255) | NO | PRI | | |
| 颜色 | char(255) | NO | PRI | | |
| 规格 | char(255) | NO | PRI | | |
| 单位 | char(255) | NO | PRI | | |
| 总量 | int(11) | YES | | NULL | |
+-------+-----------+------+-----+---------+-------+
5 rows in set (0.01 sec)mysql> DESCRIBE LSB_KCZL//
+-------+-----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+-------+
| 品名 | char(255) | NO | PRI | | |
| 颜色 | char(255) | NO | PRI | | |
| 规格 | char(255) | NO | PRI | | |
| 单位 | char(255) | NO | PRI | | |
| 库存 | int(11) | YES | | NULL | |
+-------+-----------+------+-----+---------+-------+
5 rows in set (0.00 sec)mysql> SELECT * FROM LSB_RKZL//
+--------------+------+------+------+------+
| 品名 | 颜色 | 规格 | 单位 | 总量 |
+--------------+------+------+------+------+
| CP | | | | 12 |
| CP2 | | | | 5 |
| SQL 入门经典 | | | | 0 |
| 水杯 | 白 | | | 0 |
+--------------+------+------+------+------+
4 rows in set (0.00 sec)mysql> SELECT * FROM LSB_KCZL//
+------+------+------+------+------+
| 品名 | 颜色 | 规格 | 单位 | 库存 |
+------+------+------+------+------+
| CP | | | | 2 |
+------+------+------+------+------+
1 row in set (0.00 sec)mysql> delete from lsb_rkzl where
-> LSB_RKZL.品名 = LSB_KCZL.品名 AND
-> LSB_RKZL.颜色 = LSB_KCZL.颜色 AND
-> LSB_RKZL.规格 = LSB_KCZL.规格 AND
-> LSB_RKZL.单位 = LSB_KCZL.单位
-> //
ERROR 1054 (42S22): Unknown column 'LSB_KCZL.鍝佸悕' in 'where clause'
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
mysql> delete a from lsb_rkzl a inner join LSB_KCZL b on
-> aL.品名 = b.品名 AND
-> a.颜色 = b.颜色 AND
-> a.规格 = bL.规格 AND
-> a.单位 =b.单位
-> //