Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Миграция от SQL Server 2000 към 2008 - ORDER BY Проблем при използване на DISTINCT

Можете леко да промените семантиката, като направите следното:

SELECT ZipCode FROM 
(
  SELECT DISTINCT ZipCode = LEFT(tz.Zipcode, 5)
    FROM dbo.TerritoryZip
) AS x
ORDER BY ZipCode;

Всъщност не решава проблема, тъй като заявката е по-подробна и все още не можете да избегнете докосването й. Поправката, която вече предложихте, според мен е по-добра, защото е по-ясно какво се случва.

За да не бъда груб, но ако не смятате, че ще можете да „намерите всички екземпляри на този тип SQL“, тогава как изобщо се доверявате на вашето тестване?

Бих предположил, че поддържането на режим 2000 не е оптималният отговор. Причината е, че това може да доведе до нарушаване на друг синтаксис (напр. начинът, по който можете да извиквате функции за динамично управление - вижте това Публикация в блога на Пол Рандал и моя коментар към него), вие също рискувате да запазите код, който трябва да бъде коригиран (напр. *= в стар стил / =* присъединявания, които са валидни в режим на съвместимост с 2000, но няма да са валидни, когато преминете от 2008 R2 -> Denali, който не поддържа съвместимост с 2000).

Няма настройка за „стриктност“, но можете да гласувате за SET STRICT_CHECKS ON на Erland Sommarskog; предложение .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразувайте „datetime2“ в „date“ в SQL Server (T-SQL примери)

  2. Филтриране на JOINs:WHERE срещу ON

  3. Съхраняване на изображения в SQL Server?

  4. SQL Server 2012 Service Pack 1 и сборна актуализация 1

  5. Има ли безплатни инструменти за генериране на скриптове „INSERT INTO“ в MS SQL Server?