Как обратиться к записи в таблице без первичного ключа - PullRequest
0 голосов
/ 04 апреля 2020

Я создал таблицу без первичного ключа, и она содержит несколько абсолютно идентичных записей. Как обновить или просмотреть запись, используя операторы 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     |
+----------------+-------+---------+----------+

Можем ли мы обратиться ко второй записи и изменить класс на 11-е с использованием команды обновления. Примерно так будет работать: -

UPDATE <SOMETBL> SET CLASS='11' WHERE {INDEX_OF_RECORD=1};

Исправьте часть, записанную в фигурных скобках, чтобы я мог ссылаться на запись, используя ее индекс.

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Прежде всего, отсутствие первичного ключа не является хорошей идеей, всегда полезно иметь так называемый столбец ID. Но, как известно, есть несколько способов.

Первая и вторая записи, как вы сказали, абсолютно идентичны. Таким образом, нет никакой разницы между ними, чтобы различать guish. Таким образом, совершенно не важно менять первую или вторую строку, и хороший подход для достижения этой цели - это ограничение количества строк, на которые влияет запрос на обновление. Вы можете просто использовать это

UPDATE <SOMETBL> SET CLASS='11' WHERE
    NAME ='Mohit Yadav' AND
    CLASS ='10' AND
    SECTION ='A' AND
    CITY ='Neemrana'
LIMIT 1;
0 голосов
/ 04 апреля 2020

Самый простой способ решить эту проблему - добавить столбец с автоинкрементом и затем обратиться к записи по ее уникальному int:

ALTER TABLE `t` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...