2013-11-14 6 views
0

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

Вот идея:

SELECT IF(score1>score2, (name1,score1,name2,score2),(name2,score2,name1,score1)) AS (winner,w_score,loser,l_score) FROM game table

, что я пытаюсь сделать, это тест score1> score2, в зависимости от результата, заказ поля я хочу.

+1

Я не уверен, что вы можете изменить порядок полей в вашем выборе с помощью 'IF '. Вероятно, вы должны сделать это вне запроса, например, на PHP (или на любом другом языке, который вы используете). – Travesty3

+0

первые три внизу все отлично работают. Благодарю. – granger

ответ

0

Похоже, что вам нужно, это четыре разные IF заявления:

SELECT 
    IF(score1 > score2, name1, name2) AS winner, 
    IF(score1 > score2, score1, score2) AS w_score, 
    IF(score1 > score2, name2, name1) AS loser, 
    IF(score1 > score2, score2, score1) AS l_score 
FROM game_table 

Это не самая красивая вещь, но как сравнение довольно проста, он должен вести себя хорошо.

0

Я предлагаю простое решение:

SELECT name1 AS winner, score1 AS w_score, name2 AS looser, score2 AS l_score 
FROM game table WHERE score1 > score2 
UNION 
SELECT name2 AS winner, score2 AS w_score, name1 AS looser, score1 AS l_score 
FROM game table WHERE score2 > score1 
1

Учитывая если score1, score2, name1, name2 имен столбцов в вашей game таблицы, можно сделать так:

SELECT 
    IF(score1 > score2 ,name1 ,name2) AS winner 
    ,GREATEST(score1 ,score2) AS w_score 
    ,IF(score1 > score2 ,name2 ,name1) AS loser 
    ,LEAST(score1 ,score2) AS l_score 
FROM 
    game 
+0

Уход. Никогда не видел функции «БОЛЬШЕ» и «МЕНЬШЕ» раньше :) – cmptrgeekken

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