は、私はこのようなテーブルがあります。MySQLで行をマージするにはどうすればよいですか?
// colors
+----+-------+--------+----------+---------+
| id | type | red_id | green_id | blue_id |
+----+-------+--------+----------+---------+
| 1 | 1 | 51 | NULL | NULL |
| 2 | 3 | NULL | NULL | 12 |
| 3 | 1 | 423 | NULL | NULL |
| 4 | 2 | NULL | 5432 | NULL |
| 5 | 2 | NULL | 10 | NULL |
+----+-------+--------+----------+---------+
// ^type: there is either 1 or 2 or 3 which specifies which color isn't NULL
をそして私はこの出力をしたい:
// new_colors
+----+-------+----------+
| id | type | color_id |
+----+-------+----------+
| 1 | 1 | 51 |
| 2 | 3 | 12 |
| 3 | 1 | 423 |
| 4 | 2 | 5432 |
| 5 | 2 | 10 |
+----+-------+----------+
私はCASE .. WHEN
機能を使用するために持っていると思います。
SELECT id, type,
CASE WHEN red_id IS NOT NULL THEN red_id
WHEN green_id IS NOT NULL THEN green_id
WHEN blut_id IS NOT NULL THEN blue_id
END AS color_id
FROM colors
WHERE 1
しかし、私はtype
列に依存してクエリを書こうとしています。これらの3つの数字の1つをCASE .. WHEN
の代わりにtype
列の、2
、3
に使用したいと思います。それは可能ですか?
TNXです....... .. +1 – Shafizadeh