запись “Компаратора” в SQL

У меня есть следующая проблема:

найдите самую высокую строку в таблице A согласно следующим правилам:

Таблица A
Столбцы: Дата V_Date, интервал Типа, Дата H_Date

1) найдите самый высокий V_Date
2) если V_Dates являются тем же, находят строку с самым высоким Приоритетом, где Приоритет определяется в Таблице B с интервалом столбцов Type, Приоритетным интервалом
3) если V_Date и Приоритет будут тем же, найдите тот с самым высоким H_Date (затем, то это, как гарантируют, будет уникально),

Приоритеты не отличны, таким образом, макс. (prio) возвращает больше чем одно значение.

Кто-либо может помочь мне?

Большое спасибо.

1
задан Thirdman 10 August 2010 в 08:13
поделиться

2 ответа

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

ПРИСОЕДИНЯЙТЕСЬ к таблицам. Используйте оператор ORDER BY в сочетании с оператором TOP .

0
ответ дан 2 September 2019 в 22:18
поделиться

Используйте ORDER BY и ограничьте результат одной строкой:

SELECT *
FROM TableA
JOIN TableB ON TableA.Type = TableB.Type
ORDER BY V_Date DESC, Priority DESC, H_DATE DESC
LIMIT 1

Точный синтаксис может отличаться в зависимости от конкретной базы данных.

  • В MySQL и PostgreSQL вы можете использовать LIMIT 1 , как указано выше.
  • В SQL Server вы можете использовать SELECT TOP (1) .
  • В Oracle вы можете использовать SELECT * FROM (здесь подзапрос) WHERE rownum = 1 .
2
ответ дан 2 September 2019 в 22:18
поделиться
Другие вопросы по тегам:

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