ВЫБЕРИТЕ вместо ТАБЛИЦЫ и ГДЕ в ОБНОВЛЕНИИ? - PullRequest
0 голосов
/ 03 октября 2019

Я видел ответы на те же вопросы, но я все еще сомневаюсь.

ОБНОВЛЕНИЕ в SQL должно выглядеть примерно так:

UPDATE *Table*
SET *choose value*
WHERE *what do we change*

Я хотел бы знать, есть ли возможность использовать выбор вместо TABLE (так вместо WHERE) Как

UPDATE *Select conditions and rows*
SET *What do we change (the where is implicit)

Я знаю, что UPDATE / SET / WHERE работает хорошо, но я изучаю другие возможности:)

Спасибо,

Николас

ПРИМЕР:

Необходимо сделать:

update produits
set `NO_FOURNISSEUR` = "30"
where `NO_FOURNISSEUR` = "3"

хотел бы попробовать что-то вроде:

update select * from produits where produits.`no_fournisseur`= "30"
set `NO_FOURNISSEUR`= "3"

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

MariaDB имеет выражение с, например, так:

https://mariadb.com/kb/en/library/with/

, поэтому вы должны иметь:

   WITH t AS (
   select * 
  from produits 
  where produits.no_fournisseur= '30') 
UPDATE t SET t.no_fournisseur = '3';
0 голосов
/ 03 октября 2019

Да. Стандартным способом ANSI SQL для этого является использование общего табличного выражения:

with dt as
(
  select * 
  from produits 
  where produits.no_fournisseur= '30'
) 
update dt set NO_FOURNISSEUR = '3'

. Этот стандартный синтаксис поддерживает объединения и другие конструкции запроса в части SELECT и предоставляет простой способ проверки строк перед применениемобновление.

...