如何在没有主键的情况下引用表中的记录

时间:2020-04-04 03:26:56

标签: mysql sql indexing

我创建了一个没有任何主键的表,它包含一些完全相同的记录。 如何使用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};

请更正大括号内写的部分,以便我可以使用其索引引用记录。

2 个答案:

答案 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