Как проверить детали вывода подзапроса? - PullRequest
1 голос
/ 18 февраля 2011

У меня такой запрос:

UPDATE t3
SET    somevalue  = (SELECT t2.id
                  FROM   table1 t1
                         JOIN table2 t2
                           ON t1.fk_table2_id = t2.id
                  WHERE  t3.id = t1.fk_table3_id)
FROM   table3 t3 

Подзапрос SELECT t2.id FROM table1 t1 JOIN table2 t2 ... возвращает 2+ значения в некотором месте моего SQLСервер 20008 БД.Есть ли простой способ выяснить, где он терпит неудачу?Или есть другой способ обновить столбец в одной таблице значениями из другой?

Заранее спасибо

1 Ответ

1 голос
/ 18 февраля 2011

Предполагая, что ts.id уникален, вы можете узнать, где он возвращает более 1 строки, используйте SELECT (пропустите table3 в запросе, если t1.fk_table3_id действительно является ограничением внешнего ключа):

SELECT t3.id, COUNT(*)
FROM  table1 t1 JOIN table2 t2 ON t1.fk_table2_id = t2.id
  JOIN table3 t3 ON t3.id = t1.fk_table3_id
GROUP BY t3.id
HAVING COUNT(*) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...