Преобразование оператора UPDATE в оператор SELECT - PullRequest
1 голос
/ 23 августа 2011

Следующий оператор обновляет столбец в таблице с именем 'test'.

UPDATE test AS t
INNER JOIN test AS q ON(
    q.ptime = t.ptime
)
SET t.slope_Percentile =(
    (
        SELECT
            count(*)
        FROM
            (
                SELECT
                    *
                FROM
                    test
            )AS t1
        WHERE
            t1.slope < t.slope
    )* 100 /(
        SELECT
            count(*)
        FROM
            (
                SELECT
                    *
                FROM
                    test
            ) AS tz
    )
);

Вместо обновления столбца я хотел бы получить инструкцию SELECT, которая дает показание каждой строки (которая будет обновлена, если бы это была инструкция UPDATE).

Дополнительная информация(если необходимо) о характере таблиц и цели кода здесь: Эффективное назначение процентиля / ранга в MYSQL

Ответы [ 2 ]

2 голосов
/ 23 августа 2011
SELECT t.ptime,
( 
    ( 
        SELECT 
            count(*) 
        FROM 
            ( 
                SELECT 
                    * 
                FROM 
                    test 
            )AS t1 
        WHERE 
            t1.slope < t.slope 
    )* 100 /( 
        SELECT 
            count(*) 
        FROM 
            ( 
                SELECT 
                    * 
                FROM 
                    test 
            ) AS tz 
    ) 
)  AS slope_Percentile
 FROM test AS t 
--INNER JOIN test AS q ON
--q.ptime = t.ptime 
0 голосов
/ 23 августа 2011

Как насчет этого?

SELECT *, (
    (SELECT count(*)
    FROM test AS t1
    WHERE t1.slope < t.slope) * 100 /
    (SELECT count(*)
    FROM test as tz)) as newvalue
FROM test AS t;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...