0

auth_id の値をインクリメントする更新を作成しようとしています。ただし、値がない場合は、1 に設定したいと思います。0 の値をインクリメントするための選択を取得することさえできません。

mysql> describe sequences;
+---------+--------------------------+------+-----+---------+-------+
| Field   | Type                     | Null | Key | Default | Extra |
+---------+--------------------------+------+-----+---------+-------+
| auth_id | int(5) unsigned zerofill | NO   |     | 00000   |       |
+---------+--------------------------+------+-----+---------+-------+

これはうまくいくと思いました。

mysql> select ifnull(auth_id,0) from sequences;
Empty set (0.00 sec)

それともこれ...

mysql> select coalesce(auth_id, 0) from sequences;
Empty set (0.00 sec)

私は何が欠けていますか?

4

1 に答える 1

0

これはうまくいくようです:

select ifnull(sequences.auth_id, x.auth_id) as auth_id from sequences right join (select 1 as auth_id) x on 1;

シーケンスには 1 行しかないことが前提です。トリックは、独自の行が 1 つしかない偽のテーブルに正しい結合を作成し、ifnull を使用して必要な値を取得することです。

于 2016-06-06T15:36:20.500 に答える