在mysql中删除行

3

我正在构建一个 JSP 应用程序,我希望对特定的表执行以下操作:

  • 显示数据
  • 删除数据

我已经完成了显示数据的操作,但是:

如果表中没有主键,如何删除数据库中的一行?(删除操作不依赖于该行的任何值)

假设这是我的表 -->> mytemp 这里是数据

Name | RollNo
ABC  |  98
XYZ  |  76
ABC  |  98
XYZ  |  76

这个表中没有关键字,我想要删除第三条记录。我该怎么做?


删除操作不依赖于该行的任何值。那么,删除操作依赖于哪些列?用户应该如何选择要从显示的数据中删除的行? - Mahmoud Gamal
你需要一些方式来识别要删除或执行任何其他操作的行...不管它没有主键这个事实是可怕的。 - Jon Clements
尝试查看此帖子:https://dev59.com/GHE85IYBdhLWcg3wikEu - Ajith Sasidharan
@JonClements 我同意你的观点 “你需要一种方式来识别要删除或执行任何操作的行”,但在 GUI 或 IDE 中如何实现呢? - Nishant Nawarkhede
  1. 这是什么意思 - 但在GUI或IDE中它如何工作??
  2. 你真的认为删除第三个还是第一个很重要吗?
  3. 你能给出一个使用案例,说明你何时需要这样的东西吗?
- Prakash K
3个回答

4
您可以选择任何可用的列,您认为最合适的是:例如:
DELETE FROM table_name WHERE column_name  = 'valuse'    

如果没有指定列名,那么将删除所有行。

column_name 不需要是主键,但是所有 column_name = 'value' 的行都将被删除。


编辑
要删除:

  DELETE FROM table_name WHERE Name = 'ABC' AND  RollNo  = 98;       

NameRollNo可能不是主键。

仅删除第三行:

DELETE FROM table_name  
WHERE ('ABC',98) IN ( SELECT TOP 1 Name, Rollno 
                      FROM table_name 
                      ORDER BY Name,RollNo DES)   

第二种方法:如果TOP不起作用
DELETE FROM table_name  
WHERE ('ABC',98) IN ( SELECT  Name, Rollno 
                      FROM table_name 
                      ORDER BY Name,RollNo DES LIMT 1)   

注意:它会删除一个,但我不知道是哪一个。

来试试吧!


它还将删除第一行,而我不想删除第一行。 - Nishant Nawarkhede
@Nishant 让我想一些选项。 - Grijesh Chauhan

1
如果您想删除所有记录,可以使用以下命令:
delete from TABLE_NAME

如果你的数据库中行数据有差异,你也可以添加 where 子句,例如:

delete from TABLE_NAME where COL1=XXX AND/OR COL@ =YYY

等等……

delete from TABLE_NAME where RollNo= RollNo_HERE AND Name = 'NAME_HERE'

希望这能对您有所帮助。

1

试试这个:

DELETE t
FROM YourTable t
WHERE t.Name    = 'Selected Name'
  AND t.RollNo = 'Selected RollNo';

非常感谢。如果有多行具有相同的值,则它们也会被删除,我不想这样做。 - Nishant Nawarkhede
@Nishant - 是的,它会。但是你可以通过添加“LIMIT n”来限制删除n行的数量。 - Mahmoud Gamal
谢谢,假设有三条记录,如 XYZ 98ABC 98XYZ 98XYZ 98,我想删除第三条记录,我该如何在这里设置限制? - Nishant Nawarkhede
2
@Nishant 但是如果您的条件是 WHERE name = 'xyz' and no = 89,那么您可以加上 limit 1,这将只删除一行,但对于您来说哪一行并不重要。因为表中的行没有重要的顺序。它们不是按特定顺序存储的。 - Mahmoud Gamal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接