0

これは私のMySQLクエリです:

SELECT ROUND( AVG(p.votes), 2) AS 'votes', games.*
FROM games
LEFT JOIN polls p ON (p.gid = games.id)
GROUP BY games.id;

polls正常に動作していますが、テーブルにゲームの投票がない場合 (votesフィールドが NULL の場合、結果に) 代わりに表示されるように置き換えるにはどうすればよいですか0(0行が にあるためpolls)。

また:

私の状態に名前を付けて、それを使用することは可能ですか? MySQLでの計算用?

これは私が意味するものです:

SELECT ROUND( AVG(votes), 2) AS 'votes', (votes / 50 * 100) FROM `polls`;

votesそこには不明な列があるというエラーメッセージが表示されます。

それで、私のクエリで計算目的のために条件名を(「投票」として)使用することは可能ですか?

4

2 に答える 2

1

フィールドのエイリアスを作成して、同じ select ステートメントで同じエイリアスを使用することはできません。

次のクエリを使用します。

SELECT Ifnull(Round(Avg(votes), 2), 0) AS 'votes', 
       ( Ifnull(Round(Avg(votes), 2), 0) / 50 * 100 ) 
FROM   `polls`; 
于 2012-06-12T09:07:21.510 に答える
1

初め:

COALESCE(ROUND( AVG(p.votes), 2), 0)

2番目:いいえ、まったく同じステートメントでは不可能です。エイリアス部分がサブクエリにある場合は可能です。だから書き直せばいい

(COALESCE(ROUND( AVG(p.votes), 2), 0) / 50 * 100)

COALESCE と IFNULL は同じ目的を達成しますが (まったく同じ方法ではない可能性があります)、COALESCE は ANSI SQL です。

于 2012-06-12T09:07:42.260 に答える