2012-02-20 5 views
0

если я сумел сделать на следующий виде в MySQLМожно ли использовать псевдоним столбца во многих позициях запроса?

select id,name,score,total,CALCIT(total - score) as x,(CALCIT(total - score)/total) as per from tblx; 

процесс CalcIt (всего - оценка) в настоящее время Процент от два раза

как сделать некоторые вещи, как это:

select id,name,score,total,CALCIT(total - score) as `x`,`x`/total as per from tblx; 

, где CALCIT является функцией

ответ

2

Попробуйте что-то вроде этого:

select *, x/total from (
    select id,name,score,total,CALCIT(total - score) as x from tblx; 
) as tblx 
3

MySQL позволит вам использовать псевдоним столбца в статьях ORDER BY, GROUP BY, но вы не будете b e можно повторно использовать псевдоним в списке SELECT. Если вам действительно нужно это сделать, имея много примеров вычисленного значения, вы можете сделать сам JOIN, который производит расчет.

SELECT 
    id, 
    name, 
    score, 
    total, 
    x, 
    x/total AS per 
FROM tblx JOIN (
    /* Subquery JOIN which performs the calculation */ 
    SELECT CALCIT(total - score) AS x FROM tblx xcalc 
) ON tblx.id = xcalc.id 

Этот метод может быть более производительным, чем переделка расчет в одном SELECT, но, как ни с чем, тест, чтобы узнать.

2

лучше вы можете использовать внутренний запрос -

select id, 
     name, 
     score, 
     total, 
     X, 
     X/total as per 
from (
     select id, 
       name, 
       score, 
       total, 
       CALCIT(total - score) as X from tblx 
    ) 
Смежные вопросы