Обновить первую 1 запись в таблице SQL Server [дубликат]

EDIT: Я нашел эту удивительную библиотеку, которая заменяет стандартный элемент «select» в HTML с помощью «стильных» элементов: Select2 - https://select2.github.io/ examples.html


В 2011 году вам, возможно, не удалось создать стиль «option», но это 2015 год! Вы можете полностью его стилизовать! Я не понимаю некоторых ответов от 2014 года, говоря, что вы не можете его стилизовать! CSS3 творит чудеса. Я пробовал это в своем собственном коде, и выпадающие «опции» были написаны так же, как и стиль «select»

http://cssdeck.com/labs/styling-select -box-with-css3

Вот пример кода!

select {
    padding:3px;
    margin: 0;
    -webkit-border-radius:4px;
    -moz-border-radius:4px;
    border-radius:4px;
    -webkit-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
    -moz-box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
    box-shadow: 0 3px 0 #ccc, 0 -1px #fff inset;
    background: black;
    color:#888;
    border:none;
    outline:none;
    display: inline-block;
    -webkit-appearance:none;
    -moz-appearance:none;
    appearance:none;
    cursor:pointer;
}

29
задан Kapil 26 March 2014 в 03:36
поделиться

6 ответов

UPDATE TX_Master_PCBA
SET TIMESTAMP2 = '2013-12-12 15:40:31.593',
G_FIELD='0000'
WHERE TIMESTAMP2 IN 
(
   SELECT TOP 1 TIMESTAMP2
   FROM TX_Master_PCBA WHERE SERIAL_NO='0500030309'
   ORDER BY TIMESTAMP2 DESC   -- You need to decide what column you want to sort on
)
22
ответ дан Kapil 26 March 2014 в 03:36
поделиться
WITH UpdateList_view AS (
  SELECT TOP 1  * from TX_Master_PCBA 
  WHERE SERIAL_NO IN ('0500030309') 
  ORDER BY TIMESTAMP2 DESC 
)

update UpdateList_view 
set TIMESTAMP2 = '2013-12-12 15:40:31.593'
38
ответ дан Bobi 26 March 2014 в 03:36
поделиться

Для тех, кто ищет поточно-ориентированное решение, посмотрите здесь .

Код:

UPDATE Account 
SET    sg_status = 'A'
OUTPUT INSERTED.AccountId --You only need this if you want to return some column of the updated item
WHERE  AccountId = 
(
    SELECT TOP 1 AccountId 
    FROM Account WITH (UPDLOCK) --this is what makes the query thread safe!
    ORDER  BY CreationDate 
)
3
ответ дан fabriciorissetto 26 March 2014 в 03:36
поделиться

Это также хорошо работает ...

Update t
Set t.TIMESTAMP2 = '2013-12-12 15:40:31.593'
From
(
    Select Top 1 TIMESTAMP2
    From TX_Master_PCBA
    Where SERIAL_NO IN ('0500030309')
    Order By TIMESTAMP2 DESC
) t
4
ответ дан Alexander Rivas 26 March 2014 в 03:36
поделиться

Принятый ответ Kapil ошибочен, он обновит более одной записи, если доступно 2 или более записей с одинаковыми временными метками, а не истинный запрос топ-1.

    ;With cte as (
                    SELECT TOP(1) email_fk FROM abc WHERE id= 177 ORDER BY created DESC   
            )
    UPDATE cte SET email_fk = 10

Ref Remus Rusanu Ans: - SQL-запрос top1 строки запроса

15
ответ дан Community 26 March 2014 в 03:36
поделиться

Когда TOP используется с INSERT, UPDATE, MERGE или DELETE, ссылочные строки не располагаются ни в каком порядке, и предложение ORDER BY не может быть непосредственно указано в этих операторах. Если вам нужно использовать TOP для вставки, удаления или изменения строк в значимом хронологическом порядке, вы должны использовать TOP вместе с предложением ORDER BY, которое указано в операторе subselect.

TOP нельзя использовать в выражениях UPDATE и DELETE для разделенных представлений.

TOP нельзя объединить с OFFSET и FETCH в одном и том же выражении запроса (в одной и той же области запроса). Для получения дополнительной информации см. http://technet.microsoft.com/en-us/library/ms189463.aspx

.
12
ответ дан bodi0 26 March 2014 в 03:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: