velmahesh Ответов: 3

Подзапрос вернул более 1 значения. Это недопустимо, когда подзапрос следует за=,!=,, >= или когда подзапрос используется в качестве выражения.


Я написал нижеприведенную инструкцию запроса к sql server:

SELECT  ReferringPhysician.LastName,ReferringPhysician.FirstName,
    (SELECT LocationName FROM RefPhysLocations WHERE ReferringPhysicianID = (SELECT ReferringPhysicianID FROM RefPhysLocations WHERE LocationName LIKE '%'+@keyword+'%'))   AS LocationName
    FROM    ReferringPhysician
    WHERE   ReferringPhysician.ReferringPhysicianID=(SELECT ReferringPhysicianID FROM RefPhysLocations WHERE LocationName LIKE '%'+@keyword+'%')



Но я получил следующее сообщение об ошибке от sql server.

Подзапрос вернул более 1 значения. Это недопустимо, когда подзапрос следует за=, !=, <, <= , >, >= или когда подзапрос используется в качестве выражения.

Dalek Dave

Мелкие правки грамматики.

3 Ответов

Рейтинг:
24

Sunasara Imdadhusen

Привет,

Пожалуйста, используйте TOP 1 в суб-запросе, например

SELECT  ReferringPhysician.LastName,ReferringPhysician.FirstName,(SELECT TOP 1 LocationName FROM RefPhysLocations WHERE ReferringPhysicianID = (SELECT TOP 1 ReferringPhysicianID FROM RefPhysLocations WHERE LocationName LIKE '%'+@keyword+'%'))   AS LocationName
FROM    ReferringPhysician
WHERE   ReferringPhysician.ReferringPhysicianID=(SELECT ReferringPhysicianID FROM RefPhysLocations WHERE LocationName LIKE '%'+@keyword+'%'

)


Пожалуйста, дайте мне знать, если у вас есть какие-либо сомнения.

Пожалуйста предоставить "Голос"если это будет полезно, и сделать "Принять Ответ"если это будет правильный ответ.:Роза:

Спасибо,
Имдадхусен


Dalek Dave

хороший ответ.

Рейтинг:
14

velmahesh

наконец я решил эту проблему...основываясь на приведенном ниже..


SELECT ReferringPhysician.LastName  ,ReferringPhysician.FirstName,RefPhysLocations.LocationName
    FROM    ReferringPhysician LEFT JOIN RefPhysLocations
            ON ReferringPhysician.ReferringPhysicianID = RefPhysLocations.ReferringPhysicianID
    WHERE   LocationName LIKE '%'+@keyword+'%'


tasneemiram

Выберите Couses_Name,
(Выберите B. Kilometers_Cancelled
FROM DOS_TripsperKms_Cancelled AS B INNER JOIN
Daily_Operational_Statistics как C на Б. DOS_Id = С. DOS_Id
Где (С. Depot_Id = @ID) и (С. ST1_Date &ГТ; @fromdate) и (ST1_Date С. &ЛТ;= @устареет) и (А. Couses_Name = Б. Reason_for_Cancellation))
Как Kilometers_Cancelled,
(Выберите B. Scheduled_Duty_No
FROM DOS_TripsperKms_Cancelled AS B INNER JOIN
Daily_Operational_Statistics как C на Б. DOS_Id = С. DOS_Id
Где (С. Depot_Id = @ID) и (С. ST1_Date &ГТ; @fromdate) и (ST1_Date С. &ЛТ;= @устареет) и (А. Couses_Name = Б. Reason_for_Cancellation))
Как и Планировалось_но,
(Выберите C. ST1_Date
FROM DOS_TripsperKms_Cancelled AS B INNER JOIN
Daily_Operational_Statistics как C на Б. DOS_Id = С. DOS_Id
Где (С. Depot_Id = @ID) и (С. ST1_Date &ГТ; @fromdate) и (ST1_Date С. &ЛТ;= @устареет) и (А. Couses_Name = Б. Reason_for_Cancellation)) Как ST1_Date,
(Выберите C. Scheduled_Kms
FROM DOS_TripsperKms_Cancelled AS B INNER JOIN
Daily_Operational_Statistics как C на Б. DOS_Id = С. DOS_Id
Где (С. Depot_Id = @ID) и (С. ST1_Date &ГТ; @fromdate) и (ST1_Date С. &ЛТ;= @устареет) и (А. Couses_Name = Б. Reason_for_Cancellation))
Как и Планировалось_kms
От Couses_Master как A
Я хочу, чтобы 1-й coloum, чтобы быть полностью отображаются следующие сведения coloums должно быть отображается в перед 1-й столбец, но только в уважаемых строк, если не совпадают, то ТАТ ТАТ ячейки в столбец должен быть пустым или дисплей ноль

Member 10190046

Выберите row_number()over (order by Author_name asc)as'Sno',
autdeta.unique_id,Имя_автора,телефон,адрес,email,AuthRecordID, (выбрать различные Имя_автора от autdeta
)
Из аутдеты
внутреннее соединение booksdeta
На autdeta.unique_id = booksdeta.AuthRecordID
--заказ от аутдета.Author_name ASC
выберите * из autdeta





ошибка показывает удар
Msg 512, Уровень 16, Состояние 1, Строка 1
Подзапрос вернул более 1 значения. Это недопустимо, когда подзапрос следует за=, !=, <, <= , >, >= или когда подзапрос используется в качестве выражения.

Рейтинг:
1

velmahesh

привет Имдадхузен,

я попробовал, основываясь на заявлении УР... снова пришла та же ошибка msg.

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.



SELECT  ReferringPhysician.LastName,ReferringPhysician.FirstName,(SELECT TOP 1 LocationName FROM RefPhysLocations WHERE ReferringPhysicianID = (SELECT TOP 1 ReferringPhysicianID FROM RefPhysLocations WHERE LocationName LIKE '%'+@keyword+'%'))   AS LocationName
FROM    ReferringPhysician
WHERE   ReferringPhysician.ReferringPhysicianID=(SELECT ReferringPhysicianID FROM RefPhysLocations WHERE LocationName LIKE '%'+@keyword+'%'


Sunasara Imdadhusen

почему вы не можете использовать внутреннее соединение вместо подзапроса