我创建了一个没有任何主键的表,它包含一些完全相同的记录。 如何使用SQL语句更新或查看记录?
我的桌子的结构像:-
+----------------+-------+---------+----------+
| Name | class | section | City |
+----------------+-------+---------+----------+
| Mohit Yadav | 10 | A | Neemrana |
| Mohit Yadav | 10 | A | Neemrana |
| Janvi Yadav | 10 | A | Neemrana |
| Jaspreet Singh | 11 | B | Jaipur |
| Jaspreet Singh | 11 | B | NULL |
+----------------+-------+---------+----------+
我们可以参考第二条记录,并使用update命令将类更改为第11条吗? 这样的事情会起作用:-
UPDATE <SOMETBL> SET CLASS='11' WHERE {INDEX_OF_RECORD=1};
请更正大括号内写的部分,以便我可以使用其索引引用记录。
答案 0 :(得分:2)
首先,没有主键根本不是一个好主意,拥有所谓的ID
列总是一个好习惯。但是,就像现在这样,会有一些方法。
第一条记录和第二条记录完全相同,如您所说。因此,它们之间没有实际区别。因此,更改第一行或第二行根本没有关系,实现此目的的一种好方法是对更新查询影响的行数进行限制。您可以简单地使用此
UPDATE <SOMETBL> SET CLASS='11' WHERE
NAME ='Mohit Yadav' AND
CLASS ='10' AND
SECTION ='A' AND
CITY ='Neemrana'
LIMIT 1;
答案 1 :(得分:0)
解决此问题的最简单方法是添加一个自动递增列,然后通过其现在唯一的int引用记录:
ALTER TABLE `t` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY