2013-03-19 3 views
0

Я получаю хорошо документированную ошибку:ORDER BY элементов ... но у меня нет ОКВЕКА В

ORDER BY items must appear in the select list if SELECT DISTINCT is specified.

Вот мой SQL заявление:

INSERT INTO PropertyList 
      (PropertyID, Initials) 
SELECT DISTINCT P.PropertyID, "vSTEBCodes" 
FROM Property AS P INNER JOIN ValiditySTEBCodes AS VC 
       ON P.ControlNumber=VC.ControlNumber 

Как вы можете видеть в предложении нет инструкции ORDER BY. Предположительно, там есть подразумеваемый ORDER BY, но я не вижу его.

Я запускаю это утверждение в отношении связанных таблиц в MS Access, связанных с исходным кодом SQL Server 2008. Когда я запускаю его из полной версии Access 2002, он работает без проблем. Если я попытаюсь запустить его из среды выполнения Access 2000, я получаю показанную ошибку.

Я знаю, что Access имеет тенденцию переписывать запросы в фоновом режиме, прежде чем перенаправлять их в источники ODBC (особенно многозадачные INSERT и UPDATE). Я думаю, что это может быть проблемой.

+0

Он говорит, что «ORDER BY пункты должны появиться в списке выбора, если SELECT DISTINCT задан.» Вам нужно предоставить предложение ORDER BY, чтобы он работал. –

+0

Возможно, Access добавляет 'ORDER BY' для вас. Что такое '' vSTEBCodes? '? Предполагается, что это строковый литерал, имя столбца, что-то еще? Если предполагается, что это строка, попробуйте использовать «одиночные кавычки», а также попробуйте использовать «GROUP BY P.PropertyID» вместо 'DISTINCT'. –

+0

@AwesomeProgrammer нет, это не то, о чем говорится в сообщении об ошибке. Хотя каждое утверждение * должно * вероятно иметь «ORDER BY», чтобы быть предсказуемым и повторяемым, такого требования нет. –

ответ

1

Компиляция из комментариев, попробуйте:

INSERT INTO dbo.PropertyList(PropertyID, Initials) 
    SELECT P.PropertyID, Initials = 'vSTEBCodes' -- alias and single quotes 
    FROM dbo.Property AS P -- always use schema prefix 
    INNER JOIN dbo.ValiditySTEBCodes AS VC 
    ON P.ControlNumber = VC.ControlNumber 
    GROUP BY P.PropertyID -- instead of DISTINCT 
    ORDER BY P.PropertyID; -- maybe overrides Access stupidity 
Смежные вопросы