Увеличьте значение столбца, серийный номер которого является наибольшим в MySQL - PullRequest
0 голосов
/ 04 сентября 2018

Итак, у меня есть таблица (table_name), столбцы которой Sno, count. Значение по умолчанию count равно 1. Если хотите увеличить значение столбца подсчета, где находится Sno, скажем 1 ..

UPDATE table_name SET count=count+1 where Sno=1;

это работает !!!

Но что, если я хочу увеличить значение счетчика, где Sno - Макс?

Sno  count
 1    2
 2    1

В основном мне нужна помощь в создании гибрида:

UPDATE table_name SET count=count+1 where Sno=1;

&

select MAX(Sno) from table_name;

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

Используйте следующее:

UPDATE table_name t1 
INNER JOIN (SELECT MAX(t2.Sno) AS max_Sno 
            FROM table_name t2) AS t3 ON t3.max_Sno = t1.Sno 
SET t1.count = t1.count + 1;
0 голосов
/ 04 сентября 2018

Я не проверял это, у меня телефон, но я думаю, что для этого нужно прыгнуть через раздражающий обруч.

Используйте подзапрос к таблице, которую вы обновляете, но «спрячьте» этот факт от MySQL, вложив подзапрос в другой подзапрос.

UPDATE
  table_name
SET
  count = count + 1
WHERE
  Sno = (SELECT Sno FROM (SELECT MAX(Sno) AS Sno FROM table_name) deref)

Подход JOIN также работает (от @MadhurBhaiya) , как показано здесь ...

http://sqlfiddle.com/#!9/6f7a1f6/1

0 голосов
/ 04 сентября 2018

Что-то вроде:

update table_name
  set count = count+1
where sno = (select max(sno) from table_name)

- очевидный подход (и работает в большинстве RDBMS), , но не в MySQL :

Вы не можете указать целевую таблицу 'table_name' для обновления в предложении FROM

См. Ответы на основе объединения или дальнейшего косвенного обращения для подходов, которые работают.

...