MySQL множественный запрос с небольшим количеством логики - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть таблица Users с этими значениями (для примера урезана):

  • Имя * * 1004
  • Город
  • Область
  • StateProvince
  • Страна
  • Continent
  • Сила
  • Износостойкость
  • Интеллект

Я в основном хочу запрос, который возвращает самый высокий показатель по регионам для вас. Если у вас самая высокая сила (67) в стране, самая высокая выносливость (59) в вашем городе и не самый высокий интеллект в любом месте, я бы хотел получить результат в 2 ряда:

(«Сила», 67, «Страна», «США»)

(«Выносливость», 59, «Город», «Редмонд»)

Обратите внимание, что если у вас самая высокая сила в стране, вы также будете иметь самую высокую силу в штате / провинции, округе и городе (но я бы хотел, чтобы эти результаты не были возвращены в результате). Я могу сделать все это, используя несколько запросов SELECT, однако я хотел бы знать, как сделать это в одном запросе для повышения эффективности (или, если это даже хорошая идея?). Я думаю, что логика будет выглядеть примерно так (псевдокод):

(ВЫБРАТЬ ИЗ СИСТЕМЫ ORDERBY пользователей, ГДЕ Страна = 'ПРЕДЕЛ 1 MyCountry') IF Name! = 'Me' (ВЫБРАТЬ ИЗ СИСТЕМЫ ORDERBY пользователей, ГДЕ StateProvince = 'LIMIT 1 MyState') ... и так далее

Кроме того, вышесказанное также должно работать с выносливостью и интеллектом. Спасибо!

1 Ответ

0 голосов
/ 03 февраля 2012

Проверьте эту ссылку MySQL control-flow-functions

SELECT CASE 1 WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END;
...