поиск между местами

#sql #sql-server #stored-procedures #mysqli #plsql

#sql #sql-сервер #хранимые процедуры #mysqli #plsql

Вопрос:

  1. У меня есть таблица tblroute_details

введите описание изображения здесь

  1. Я хочу найти между местами, я использовал этот запрос

     SELECT (placeName) 
      FROM tblRouteDetails
     WHERE ID Between (
            SELECT  ID 
              FROM tblRouteDetails 
              WHERE placeName = 'Kaushambi' ) 
         AND (SELECT ID 
              FROM tblRouteDetails 
              WHERE placeName = 'Ghaziabad') 
      

    ПОРЯДОК ПО идентификатору

Выдает ошибку

 Msg 512, Level 16, State 1, Line 3
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
  

Ответ №1:

 SELECT id, placeName FROM tblRouteDetails 
WHERE placeName in ('Kaushambi','Ghaziabad') 
ORDER BY ID
  

Комментарии:

1. он выдает только верхние записи 1, мне нужны обе записи

2. для чего вам нужны места между ‘Kaushambi’ и ‘Kaushambi’

3. Мне нужны все те места, которые я ввел

4. наличие какого-либо конкретного условия

5. в соответствии с именем места, которое я ввел

Ответ №2:

У вас более 1 строки с placeName = 'Kaushambi' и placeName = 'Ghaziabad' , и именно поэтому вы получаете ошибку.
Попробуйте с этим:

 SELECT placeName 
FROM tblRouteDetails 
WHERE ID Between 
  (SELECT MIN(ID) FROM tblRouteDetails WHERE placeName = 'Kaushambi') 
  AND 
  (SELECT MAX(ID) FROM tblRouteDetails WHERE placeName = 'Ghaziabad') 
  AND placeName <> 'Kaushambi' AND placeName <> 'Ghaziabad'
ORDER BY ID
  

Ответ №3:

Вложенный запрос SELECT ID FROM tblRouteDetails WHERE placeName = 'Ghaziabad' и SELECT ID FROM tblRouteDetails WHERE placeName = 'Kaushambi' вернет более одной записи. Попробуйте

 SELECT ( placename )
FROM   tblroutedetails
WHERE  id BETWEEN (SELECT id
                   FROM   tblroutedetails
                   WHERE  placename = 'Kaushambi'
                   LIMIT  1) AND 
                   (SELECT id
                   FROM   tblroutedetails
                   WHERE  placename = 'Ghaziabad'
                   LIMIT  1)
ORDER  BY id  
  

хорошо, я ввожу названия мест Каушамби и Газиабад, я хочу ИДЕНТИФИКАТОР, имя места 9
Каушамби 10 Газиабад 28 Каушамби 29 Газиабад

 SELECT id, placeName FROM tblroutedetails
WHERE placeName RLIKE 'Kaushambi|Ghaziabad' 
ORDER BY id