0

結果を並べ替えたいa.right(1 - true、0 - false の 2 つの値がある場合があります)。a.right=1最初に来なければならない行。試してみGROUP BYました。しかし、助けにはなりませんでした。上記の結果を達成する方法は?

SELECT
    u.fullname,
    a.id,
    a.content,
    a.addDT,
    a.`right`,
    acr.score,
    acr.checkDT
FROM
    answers a
INNER JOIN users u ON u.id = a.uid
LEFT JOIN `answer_chk_results` acr ON acr.aid = a.id
WHERE
    a.qid = 1
GROUP BY
    a.`right` DESC
4

4 に答える 4

2

ちょっとした間違い。ORDER BYの代わりに試してくださいGROUP BYORDER BYはレコードのソートに使用され、GROUP BYはレコードの集約に使用されます。

あなたのクエリは

SELECT
    u.fullname,
    a.id,
    a.content,
    a.addDT,
    a.`right`,
    acr.score,
    acr.checkDT
FROM
    answers a
INNER JOIN users u ON u.id = a.uid
LEFT JOIN `answer_chk_results` acr ON acr.aid = a.id
WHERE
    a.qid = 1
ORDER BY
    a.`right` DESC
于 2012-09-08T11:33:36.983 に答える
1

ORDER BY結果のソートに使用する必要があります。GROUP BY結果を集計するためのものです。

于 2012-09-08T11:33:31.983 に答える
0

これを最後に追加してみてください:

ORDER BY
    a.right DESC
于 2012-09-08T11:33:59.060 に答える
0

並べ替えには、ORDER BY を使用する必要があります。

    SELECT
        u.fullname,
        a.id,
        a.content,
        a.addDT,
        a.`right`,
        acr.score,
        acr.checkDT
    FROM
        answers a
    INNER JOIN users u ON u.id = a.uid
    LEFT JOIN `answer_chk_results` acr ON acr.aid = a.id
    WHERE
        a.qid = 1
    ORDER BY
        a.`right` DESC
于 2012-09-08T11:34:29.670 に答える