2014-12-09 1 views
1

Возможно ли доступ к выбору записи из данного столбца и обновление того же столбца с выбранной вами записью?Изменение значений в столбце со значением из того же столбца

Например:

----column---- 
    test 




--------------- 

становится

-----Column------ 
     test 
     test 
     test 
     test 
------------------- 

Обратите внимание на пробелы в первой таблице, а также, как во второй таблице те заготовки были заполнены со значением, которое было в первом ряду. Есть ли способ сделать это, не говоря уже о «обновлении для проверки»? Я не понимаю, как это сделать, не сообщив Access, что ему нужно специально обновить пробелы до «теста».

+0

способ обновления записей в Access и других баз данных является использование 'update'. Я понятия не имею, что вы действительно спрашиваете, если вы хотите обновить, без 'update'. –

+0

Я все еще хочу использовать обновление, я просто не хочу конкретно говорить, что он должен обновить. Я был способ проверить, что первая запись находится в столбце, и обновить остальную часть столбца до любой записи. –

ответ

0

Это будет делать то, что вы хотите:

UPDATE Table1, (SELECT TOP 1 Field1 As F FROM Table1 WHERE Field1 Is Not Null) 
    SET Field1 = F 
    WHERE Field1 Is Null 

Он обрабатывает несколько специальных случаев безопасно:

  • Если более чем одна строка имеет значение в Fleld1, значение из первой такой строки используется ,
  • Первая строка таблицы не обязательно должна иметь значение в поле 1.
  • Если ни одна из строк не имеет значения в поле 1, ничего плохого не произойдет.

До:

Field1 Field2 
      apple 
    pet  cat  
      dog  
    color red  
      blue  

После:

Field1 Field2 
    pet  apple 
    pet  cat  
    pet  dog  
    color red  
    pet  blue  
+0

Это работает! Спасибо –

0

Предполагая, что вы есть:

  • стол MY_TABLE
  • колонна col_1
  • несколько записей, из которых только один имеет значение (не нулевой) для col_1

Обновление заявление для заполнения COL_1 всех записей с ненулевым значением:

update MY_TABLE 
    set COL_1 = (select COL_1 FROM MY_TABLE where COL_1 is not null) 
where COL_1 IS NULL; 
+0

Я получал синтаксическую ошибку в имени столбца (в исходном столбце есть пробелы в имени ... да, я знаю, что это плохая практика), поэтому я помещаю '[]' вокруг имени столбца, и теперь он говорит мне, что операция должна используйте обновляемый запрос'. –

+0

исправлено имя столбца, которое не содержит пробелов, но имеет ту же проблему. Я не понимаю, что случилось. Это не файл только для чтения, и он не имеет никаких отношений. –

+0

Исповедь: у меня нет доступ к доступу прямо сейчас. Я просто отвечал стандартным способом SQL. Возможно, это связано с внутренним выбором. База данных не может быть уверен, что запрос всегда будет возвращать только одно значение. Другое предложение (не проверено): замените внутренний select на '(выберите max (COL_1) из MY_TABLE WHERE COL_1 IS NOT NULL)' Это всегда будет возвращать только одно значение. Надеюсь, что это работает. – Conffusion

Смежные вопросы