Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql错误-删除具有优先级的重复行 预告_Mysql_Sql_Sql Delete - Fatal编程技术网

MySql错误-删除具有优先级的重复行 预告

MySql错误-删除具有优先级的重复行 预告,mysql,sql,sql-delete,Mysql,Sql,Sql Delete,我的表名为Test: -- Table Creation CREATE TABLE Test( id integer, title varchar (100) ); 测试表 | Id | title | |----|--------| | 1 | Hi | | 2 | Hello | | 2 | Hellew | | 3 | World | | 3 | Wordy | 过程 我想删除重复id 基于优先级 问题 这是我得到的输出错误 ERROR 109

我的表名为
Test

-- Table Creation
CREATE TABLE Test(
    id integer,
    title varchar (100)
);
测试表

| Id | title  |
|----|--------|
| 1  | Hi     |
| 2  | Hello  |
| 2  | Hellew |
| 3  | World  |
| 3  | Wordy  |
过程 我想
删除
重复id
基于优先级

问题 这是我得到的输出错误

ERROR 1093 (HY000) at line 5: You can't specify target table 'Test' for update in FROM clause
所需输出
谢谢,

您在这里没有明确提到什么是“优先权”。但是看一下输出示例,我假设优先级是保留那些比其他具有类似id的字符串大的字符串。下面是我的代码:

    delete a.* from Test a join Test b
    on a.id = b.id where a.title < b.title;
    select * from Test;
从测试a中删除a.*加入测试b
a.id=b.id,其中a.title
参考文献
您没有明确提到此处的“优先级是什么。但是看一下输出示例,我假设优先级是保留那些比其他具有类似id的字符串大的字符串。下面是我的代码:

    delete a.* from Test a join Test b
    on a.id = b.id where a.title < b.title;
    select * from Test;
从测试a中删除a.*加入测试b
a.id=b.id,其中a.title
参考文献

是什么代码导致错误?如果没有主键,那么就没有真正的表。@那么,您认为如果我编辑我的表使主键
不为NULL
这会解决我没有重复值的问题,并且
Delete
语句会起作用吗?没有明显的“优先级”,错误似乎来自UPDATE语句,而不是DELETE语句。请发布您拥有的代码。可能我有点老派,但我认为主键是询问有关关系数据库中的查询问题的先决条件。导致错误的代码是什么?如果您没有主键,那么您就没有真正的表。@因此,你认为如果我编辑我的表使主键
不为空
这会解决我没有重复值的问题,并且
Delete
语句会起作用吗?没有明显的“优先级”,错误似乎来自UPDATE语句,而不是Delete语句,请发布您拥有的代码,可能我有点老派,但我认为主键是询问有关关系数据库中查询的问题的先决条件
a
b
是什么意思?这是我给相关表的别名。因为我们在这里是自连接表,所以需要给出不同的名称。非常基本的数据库概念。如果我的回答解决了您的问题,请将其标记为正确答案。谢谢,它起作用了。你能解释一下什么是
a
b
更多。。。所以,我可以回到这个问题上来作为参考。请在回答中包含您的解释。您可以在此处阅读有关别名的内容:。在标题下阅读:ALIAS a table我所说的优先级是表中第一次出现的。MySql将它作为一个引用,因此,如果它在它之后找到另一个值,它会使用
您的查询将其删除。例如,当查询在表中找到2个键时,它将第一次出现,然后删除后面具有相同
id
的任何项。您对
a
b
的定义是什么?这是我给相关表的别名。因为我们在这里是自连接表,所以需要给出不同的名称。非常基本的数据库概念。如果我的回答解决了您的问题,请将其标记为正确答案。谢谢,它起作用了。你能解释一下什么是
a
b
更多。。。所以,我可以回到这个问题上来作为参考。请在回答中包含您的解释。您可以在此处阅读有关别名的内容:。在标题下阅读:ALIAS a table我所说的优先级是表中第一次出现的。MySql将它作为一个引用,因此,如果它在它之后找到另一个值,它会使用
您的查询将其删除。例如,当查询在表中找到2个键时,它将第一次出现,然后删除后面具有相同
id
的任何内容。
    delete a.* from Test a join Test b
    on a.id = b.id where a.title < b.title;
    select * from Test;