发布网友 发布时间:2022-04-26 18:40
共4个回答
懂视网 时间:2022-04-14 09:48
仔细看Mysql-文档(12.2.2. DELETE Syntax)手册应该不会出现这个问题,如果遇到请接着向下看: 在存储过程中,调用: delete a from db1.tb1 a, db2.tb2 b where a.col1 = b.col1 and a.col2 = b.col2; 出现题目中的错误,原因如下: 在mysql中多表联合删除
仔细看Mysql-文档(12.2.2. DELETE Syntax)手册应该不会出现这个问题,如果遇到请接着向下看:
在存储过程中,调用:
delete a from db1.tb1 a, db2.tb2 b where a.col1 = b.col1 and a.col2 = b.col2;
出现题目中的错误,原因如下:
在mysql中多表联合删除时,表别名只能在sql中表关联部分声明。我们应该避免不是表关联部分声明别名,因为这产生歧义的sql,从而产生不是期望的结果,例如在错误的表中删除行,举个例子来说:
DELETE t1 AS a2 FROM t1 AS a1 INNER JOIN t2 AS a2;
对于多个表的删除,表的列表中提到的表别名的引用,使用默认数据库,除非已经明确地指定了一个数据库。例如,如果默认数据库是db1,下面的语句将不会工作,因为不确定的别名a2被认为已经有了db1:
DELETE a1, a2 FROM db1.t1 AS a1 INNER JOIN db2.t2 AS a2WHERE a1.id=a2.id;
除了默认数据库外,为了正确地匹配表的别名,我们必须明确地指定正确的数据库的名字,
DELETE a1, db2.a2 FROM db1.t1 AS a1 INNER JOIN db2.t2 AS a2WHERE a1.id=a2.id;
根据上述理论,我的sql应该这样写:
delete db1.a from db1.tb1 a, db2.tb2 b where a.col1 = b.col1 and a.col2 = b.col2;
还有需要注意的是:
1.如果你为一个表声明了别名,当你指向这个表的时候,就必须使用这个别名,例如:
-- 正确的写法: DELETE t1 FROM test AS t1, test2 WHERE ... -- 错误的写法:DELETE test FROM test AS t1, test2 WHERE ...
2.在多个表联合删除时,不能使用order by 或limit,而单个表的删除时就没有这个。
3.当前,我们还不能在删除表的时候,在子查询中select from相同的表。
原文:http://www.cnblogs.com/sunss/archive/2011/01/20/1940306.html
原文地址:Unknown table ‘a’ in MULTI DELETE的解决办法和说明, 感谢原作者分享。
热心网友 时间:2022-04-14 06:56
单从字面理解,我们很容易得出列名不存在的结论,但是,很多时候起始并不是由于列名出错造成的。而是由于拼凑sql语句时对字符类型数据没有用引号引起来造成的。
举例说明:
然后找到了解决的方案,原来是我们在代码和sql工具中写sql语句的时候,字符串用‘’就可以被引用,但是在Xshell环境下,并没有这样的环境,Linux的命令中,似乎“”才是引用字符串的王道,所以只需要把我们想要添加的文字替换成用“”包括就可以了。
字符型数据定义:
字符型(Character)数据是不具计算能力的文字数据类型,用字母C表示。它包括中文字符、英文字符、数字字符和其他ASCⅡ字符,其长度(即字符个数)范围是0-254个字符。
Xshell 定义:
Xshell 是 一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的
热心网友 时间:2022-04-14 08:14
实例一、
Unknown column 'special' in 'field list' (1054)
解决方法:
方法1:
数据表pw_attach缺少字段special,类型是tinyint(3),进phpmyadmin添加一下就可以了
方法2:
也可以在数据库运行SQL
ALTER TABLE `pw_attachs` ADD `special` tinyint(3) UNSIGNED NOT NULL AFTER `needrvrc`;
方法3:
如果您不会操作数据库,也可以把这个文件(下载)放到论坛根目录下执行(即跟index.php
global.php这些文件放在一起,域名/special.php就可以执行了)
记得注意备分数据库,运行完请手动删除该文件
实例二、
Unknown column 'aid' in 'field list' ( 1054 )
缺少字段aid
phpmyadmin执行
ALTER TABLE `pw_forumdata` ADD `aid` smallint(6) UNSIGNED NOT NULL AFTER `top2`;
或者把该文件(下载)放到论坛根目录下运行(域名/aid.php),运行完请手动删除
实例三、
Unknown column 'time' in 'field list' ( 1054 )
phpmyadmin执行
ALTER TABLE `pw_elements` ADD `time` int(10) UNSIGNED NOT NULL;
或者把该文件(下载)放到论坛根目录下执行一下(域名/time.php),然后手动删除即可
实例四、
Unknown column 'p.multiple' in 'field list' ( 1054 )
数据库缺少字段 multiple ,可以phpmyadmin执行以下SQL语句
ALTER TABLE `pw_polls` ADD `multiple` tinyint(1) UNSIGNED NOT NULL;
也可以把该文件(下载)放到根目录下运行(域名/multiple.php)即可,运行完请手动删除
实例五、
Unknown column 'p.mostvotes' in 'field list' ( 1054 )
在phpmyadmin中执行以下sql语句
ALTER TABLE `pw_polls` ADD `mostvotes` smallint(6) UNSIGNED NOT NULL;
或者把该文件(下载)放到根目录下运行下(域名/mostvotes.php) 运行成功后记得手动删除该文件
实例六、
Unknown column 'p.voters' in 'field list'
在phpmyadmin中执行以下sql语句
ALTER TABLE `pw_polls` ADD `voters` mediumint(8) UNSIGNED NOT NULL
或者把该文件(下载)放到根目录下运行下(域名/voters.php) 运行成功后记得手动删除该文件
请采纳答案,支持我一下。追问不要粘贴的 没有解决问题
热心网友 时间:2022-04-14 09:48
adminp 这列无效啊,看一下你的表,而且你给出的程序里没有admin是在where后面的追问已经解决