2

クエリ

SELECT
  CASE
  WHEN `tomato_rating` = 0 THEN 'NULL'
  WHEN `tomato_rating` != 0 THEN `tomato_rating`
  END `tomato_rating`,
  ur.`user_rating`, 
  ABS(tomato_rating - ur.`user_rating`) AS avg_guess_error  
FROM user_rating ur
  LEFT JOIN videos v
    ON ur.vid_id = v.id
WHERE ur.user_id = '1'

確認のために結果のスクリーンショットを参照してください

ここに画像の説明を入力してください

必要な結果

NULL - 50 NULL
50   - 30 20
65   - 33 32
NULL - 16 NULL
4

3 に答える 3

2

私があなたの質問を理解するならば、あなたはNULLもし戻ってきたいですtomato_rating = 0

これを行うには、次のNULLIF関数を使用できます。

SELECT
  NULLIF(`tomato_rating`, 0) AS `tomato_rating`,
  ur.`user_rating`, 
  ABS(NULLIF(`tomato_rating`, 0) - ur.`user_rating`) AS avg_guess_error  
FROM user_rating ur
  LEFT JOIN videos v
    ON ur.vid_id = v.id
WHERE ur.user_id = '1'
于 2012-04-04T15:50:13.840 に答える
1

私はこれがあなたが探しているものだと思います:

SELECT
  IF (`tomato_rating` = 0, 'NULL', `tomato_rating`) as `tomato_rating`,
  ur.`user_rating`,
  IF (`tomato_rating` = 0, 'NULL', ABS(tomato_rating - ur.`user_rating`))
    as avg_guess_error  
FROM user_rating ur
LEFT JOIN videos v ON ur.vid_id = v.id
WHERE ur.user_id = '1'

'NULL'の代わりに文字列を使用していることに注意してくださいNULL

于 2012-04-04T15:50:56.883 に答える
0

これはあなたが探しているものですか?

SELECT
CASE
WHEN `tomato_rating` = 0 THEN 'NULL'
WHEN `tomato_rating` != 0 THEN `tomato_rating`
END `tomato_rating`,
ur.`user_rating`, 
CASE
WHEN `tomato_rating` = 0 THEN 'NULL'
WHEN `tomato_rating` != 0 THEN ABS(tomato_rating - ur.`user_rating`) 
END `avg_guess_error`,  
FROM user_rating ur
LEFT JOIN videos v
ON ur.vid_id = v.id
WHERE ur.user_id = '1'
于 2012-04-04T15:50:14.630 に答える