2015-09-01 8 views
5

Не могли бы вы пересмотреть этот код? Я получил эту ошибку, и я не уверен, что это вызвано:SQL Server - Неверный синтаксис рядом)

Incorrect syntax near ')'.

select * 
from 
    (select distinct 
     sar90.code, sar90.state, sar90.county, 
     sabet.code, sabet.state, sabet.county 
    from 
     [dbo].[sarshomari_90] as sar90, 
     [dbo].[Fixed] as sabet 
    where 
     sar90.county = sabet.county 
     and sar90.state = sabet.state 
     and sar90.state = N'kerman') 
+2

[Вредные привычки пинать: использование старого стиля JOIN и] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old -style-joins.aspx) - стиль старого стиля * разделенный запятыми список таблиц * был заменен на * правильный * ANSI 'JOIN' синтаксис в ANSI - ** 92 ** SQL Standard (** более 20 лет ** назад), и его использование не рекомендуется –

+0

Я думаю, вы должны попробовать его самостоятельно в течение как минимум 10 минут, я называю это РАНЫМИ ОШИБКАМИ sql –

+0

Откуда вы знаете, я этого не сделал? –

ответ

7

Вам необходимо указать свой подзапрос. Однако для этого вам не нужно использовать подзапрос. Вы можете напрямую использовать SELECT DISTINCT. Также, пожалуйста, avoid using old-style JOIN syntax и используйте вместо этого явную декларацию JOIN.

Однако, если вы хотите использовать подзапрос, ваш столбец должен иметь уникальные имена. Сделайте это, добавив уникальные псевдонимы.

select * 
from(
    select distinct 
     sar90.code as code1, 
     sar90.state as state1, 
     sar90.county as country1, 
     sabet.code as code2, 
     sabet.state as state2, 
     sabet.county as country2 
    from [dbo].[sarshomari_90] as sar90 
    inner join [dbo].[Fixed] as sabet 
     on sar90.county = sabet.county 
     and sar90.state = sabet.state 
    where 
     sar90.state = N'kerman' 
)t 
+0

Да, я знаю, но это было частью большого запроса, я пытался использовать меньшую часть моего запроса. Плюс, псевдоним не будет работать, он дает еще одну ошибку. –

+0

@yousefyegane вам нужно опубликовать весь код, чтобы помочь вам – Madhivanan

+0

Вы должны использовать уникальные псевдонимы для каждого столбца в подзапросе. См. Мое редактирование. –

3

Добавить псевдоним подзапрос и псевдоним для столбца, чтобы избежать неоднозначных имен.

select * 
from 
(select distinct 
    [code1] = sar90.code, 
    [state1] = sar90.state, 
    [county1] = sar90.county, 
    [code2] = sabet.code, 
    [state2] = sabet.state, 
    [county2] = sabet.county 
from [dbo].[sarshomari_90] as sar90, [dbo].[Fixed] as sabet 
where sar90.county=sabet.county 
     and sar90.state= sabet.state 
     and sar90.state=N'kerman') AS tab 
+0

Сначала у меня была AS, и она дала эту ошибку: Состояние столбца было указано несколько раз для «fin». –