0

私はこのようなものが欲しいです:

+----------+------+-----+--------+
| image_id | good | bad | result |
+----------+------+-----+--------+
|        1 |   10 |   2 |      x |
+----------+------+-----+--------+
|        2 |    4 |   1 |      y |
+----------+------+-----+--------+

ここで、x と y はそれぞれ 10 - 2 と 4 - 1 になるように自動的に計算されます。 (良い - 悪い) -可能であれば負の数は避けてください-

値(良いか悪いか)も変化した場合、この値も変更したいと思います。

+----------+------+-----+--------+
| image_id | good | bad | result |
+----------+------+-----+--------+
|        1 |   10 |   2 |      x |
+----------+------+-----+--------+
|        2 |    4 |   1 |      y |
+----------+------+-----+--------+

これはphpで実行できますが、MYSQLで直接実行する方法はありますか?

4

4 に答える 4

1

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

select image_id, good, bad, GREATEST(good-bad, 0) as 'result' from tbl

これにより、各行の差が計算され、結果が返されます (結果が負の場合は 0 = 結果という名前の別の列に表示されます)。

原則として、同じテーブルの他の列に完全に基づく計算結果を列に格納しないようにしてください。特に、計算が単純な違いのように些細なものである場合は特にそうです。

于 2013-08-26T14:18:02.050 に答える
0

あなたは簡単に書くことができます:

select image_id, good, bad, (good-bad) as result from mytable
于 2013-08-26T14:18:54.160 に答える
0

あなたができることは、このスキーマを持つことです:

CREATE TABLE tbl (image_id INTEGER PRIMARY KEY, good INTEGER, bad INTEGER);
CREATE VIEW tbl_result AS SELECT image_id, good, bad, CAST(good AS INTEGER) - bad AS result FROM tbl;
于 2013-08-26T14:19:40.990 に答える