2012-02-03 3 views
0

У меня есть таблица пользователей с этими значениями (урезанная для примера):MySQL множественный запрос с немного логики

  • Название
  • Город
  • County
  • StateProvince
  • Страна KG
  • Континент
  • Сила
  • Endurance
  • Intelligence

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

('Strength', 67, «Страна», «США»)

(«Endurance», 59, «Город», «Redmond»)

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

(SELECT FROM Пользователи OrderBy усилительный LIMIT Country = 'MyCountry' 1) IF Name = 'Me' (SELECT FROM Users OrderBy усилительный! StateProvince = 'MyState' LIMIT 1) ... и т. Д.

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

ответ

0

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

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

Это помогает поставить меня на правильный путь, но я до сих пор полный новичок в этом, и я имею трудное время понимание того, как сформировать логику, которая в основном говорит «, когда мы получили 0 строк, или имя не является «MyName» – Trevor

Смежные вопросы