У меня есть таблица, в которой я хочу обновить некоторые строки.Все поля не являются нулевыми.Я делаю подзапрос и хочу обновить таблицу с ненулевыми результатами.
См. Ниже мой окончательный ответ: В MySQL я решаю эту проблему, выполняя ОБНОВЛЕНИЕ ИГНОРИРОВАНИЯ.Как мне заставить это работать в SQL Server 2005?Подзапрос использует соединение из четырех таблиц, чтобы найти данные для вставки, если они существуют.Обновление выполняется для таблицы, которая может содержать более 90 000 записей, поэтому мне нужно решение, использующее SQL, вместо того, чтобы Java-программа, запрашивающая базу данных, получала результаты, а затем обновляла те поля, где мы получили ненулевое значениезначения.
Обновление: Мой запрос:
UPDATE #SearchResults SET geneSymbol = (
SELECT TOP 1 symbol.name FROM
GeneSymbol AS symbol JOIN GeneConnector AS geneJoin
ON symbol.id = geneJoin.geneSymbolID
JOIN Result AS sSeq ON geneJoin.sSeqID = sSeq.id
JOIN IndelConnector AS joiner ON joiner.sSeqID = sSeq.id
WHERE joiner.indelID = #SearchResults.id ORDER BY symbol.id ASC)
WHERE isSNV = 0
Если я добавлю «И символ.НЕТ НЕДЕЙСТВИТЕЛЕН» к ГДЕ, где я получаю ошибку SQL.Если я запускаю его как есть, я получаю ошибки «добавление нуля в ненулевой столбец».: - (
Спасибо всем, в итоге я нашел это:
UPDATE #SearchResults SET geneSymbol =
ISNULL ((SELECT TOP 1 symbol.name FROM
GeneSymbol AS symbol JOIN GeneConnector AS geneJoin
ON symbol.id = geneJoin.geneSymbolID
JOIN Result AS sSeq ON geneJoin.sSeqID = sSeq.id
JOIN IndelConnector AS joiner ON joiner.sSeqID = sSeq.id
WHERE joiner.indelID = #SearchResults.id ORDER BY symbol.id ASC), ' ')
WHERE isSNV = 0
Хотя было бы лучше ничего не делать в нулевом случае (поэтому я собираюсь попытатьсяпонять другие ответы и посмотреть, быстрее ли они) установка пустых ответов также для пустых ответов, и вот что это делает.
Примечание: Оборачивание ISNULL (...) с помощью () выводовчтобы действительно скрывать (и ошибаться) ошибки.
TIA,
Greg