Ошибка SQL с порядком в подзапросе

Мое решение:

Удалите все проверки ориентации из exif-данных. Я не смог найти ни одного случая, где это было бы точно.

Используйте стандарт String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};, чтобы получить ориентацию.

Если это 0, используйте decodeStream ...

if(o.outHeight > o.outWidth){
  //set orientation to portrait
}

еще это пейзаж

63
задан Steven 15 November 2017 в 11:01
поделиться

6 ответов

Это ошибка, которую вы получаете (выделено мной):

Предложение ORDER BY недопустимо в представления, встроенные функции, производные таблицы, подзапросы и общая таблица выражений, , если только TOP или FOR XML также указано.

Итак, как можно избежать ошибки? Я полагаю, что указание TOP было бы одной из возможностей.

SELECT (
  SELECT TOP 100 PERCENT
  COUNT(1) FROM Seanslar WHERE MONTH(tarihi) = 4
  GROUP BY refKlinik_id
  ORDER BY refKlinik_id
) as dorduncuay
103
ответ дан 24 November 2019 в 16:08
поделиться

В этом примере порядок сортировки не добавляет информации - СЧЕТЧИК набора тот же, в каком бы порядке он ни был!

Если бы вы выбирали что-то, от чего зависело заказ, вам нужно будет сделать одно из того, что сообщает вам сообщение об ошибке - использовать TOP или FOR XML

2
ответ дан 24 November 2019 в 16:08
поделиться

Добавьте команду Top в свой подзапрос ...

SELECT 
(
SELECT TOP 100 PERCENT 
    COUNT(1) 
FROM 
    Seanslar 
WHERE 
    MONTH(tarihi) = 4
GROUP BY 
    refKlinik_id
ORDER BY 
    refKlinik_id
) as dorduncuay

:)

3
ответ дан 24 November 2019 в 16:08
поделиться

Вам не нужен заказ по в подзапросе. Переместите его в основной запрос и включите столбец, который вы хотите упорядочить, в подзапрос.

однако ваш запрос просто возвращает счетчик, поэтому я не вижу смысла упорядочивания по.

4
ответ дан 24 November 2019 в 16:08
поделиться

Подзапрос (вложенное представление) в том виде, в каком он у вас есть, возвращает набор данных, который вы затем можете упорядочить в своем вызывающем запросе. Заказ самого подзапроса не повлияет (надежно) на порядок результатов в вызывающем запросе.

Что касается самого вашего SQL: а) Я не видел причин для заказа, поскольку вы возвращаете одно значение. б) Я все равно не вижу причин для подзапроса, поскольку вы возвращаете только одно значение.

Я предполагаю, что здесь есть намного больше информации, которую вы могли бы сообщить нам, чтобы решить возникшую у вас проблему.

2
ответ дан 24 November 2019 в 16:08
поделиться

Помимо того, что order by, похоже, не имеет смысла в вашем запросе..... Чтобы использовать order by в sub select, вам нужно использовать TOP 2147483647.

SELECT (
  SELECT TOP 2147483647
  COUNT(1) FROM Seanslar WHERE MONTH(tarihi) = 4
  GROUP BY refKlinik_id
  ORDER BY refKlinik_id
) as dorduncuay

Насколько я понимаю, "TOP 100 PERCENT" больше не гарантирует упорядочивание, начиная с SQL 2005:

В SQL Server 2005, ORDER BY в определении представления используется только для определения строк, которые возвращаются предложением TOP. Предложение ORDER BY не гарантирует упорядоченных результатов при запросе представления, если только ORDER BY также не указан в самом запросе.

См. SQL Server 2005 breaking changes

Надеюсь, это поможет, Патрик

33
ответ дан 24 November 2019 в 16:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: