
こんにちは、Mysql初心者です。
テーブルの最初にid カラムを作成し、プリマリーキー、オートナンバーで設定したのですが、データを入力しようとすると下記エラーが発生します。
最初の位置にあるので、それ以外を入力しようとidカラムを無視して、
2番目のカラムから入力するのでは駄目なのでしょうか?
insert into テーブル名 values ( 2番目のカラム値,3番目のカラム値・・・);
エラーは下記です。
ERROR 1136: Column count doesn't match value count at row 1
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
列名を省略した場合、「表を構成する全列を、定義順で指定」と解釈されます。
したがって、valuesで指定する値は、すべての列に対応している必要があります。auto_incrementの列は、nullを格納すると、自動的にカウントアップしてくれます。
1番目のauto_increment列に、対応する値としてnullを入れ、列数と値数を合わせるといった方法があります。
insert into t1
values(null,
2番目の列の値,
3番目の列の値,
・・・)
MySQL 5.0以降であれば、ビューを定義し、ビュー経由でinsertすることで、1番目の列を意識しないことも可能です。
create table t1
(c1 int primary key auto_increment,
c2 int,
c3 varchar(10),
c4 datetime);
insert into t1 values
(null, -- auto_increment
100,'a',current_timestamp);
insert into t1 values
(null, -- auto_increment
200,'b',current_timestamp);
create view vt1
as
select c2,c3,c4 from t1;
insert into vt1 -- ビュー経由
values
(300,'c',current_timestamp);
回答ありがとうございました。
なるほど、null を入れると簡単にできました。
ビューを使った方法もやってみます。
ありがとうございました。
No.1
- 回答日時:
INSERT INTO `tablename` VALUES ( 2番目のカラム値,3番目のカラム値・・・);
カラム名を指定しなかった場合は最初のカラムから自動的に割り当てられます。
idカラムも自動的に割り当てられてしまいますので「2番目のカラム値」がidカラムに
割り当てられてしまうためidの重複でエラーになっているとおもわれます。
対策としては以下のようにカラム名を指定する方法があります。
INSERT INTO `テーブル名` ( `2番目のカラム名`,`3番目のカラム名`,・・・ ) VALUES ( 2番目のカラム値,3番目のカラム値・・・);
なお、あまりお勧めできませんがidカラムを末尾にもってくることで割り当てから外すという手もあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構造が異なる二つのテーブルをu...
-
エクセルかワードで家系図を作...
-
カラムとコラムの使い分け
-
UNIONする際、片方テーブルしか...
-
AUTO_INCREMENTに0はダメ?
-
now()かCURRENT_TIMESTAMPか
-
自動販売機でホットとアイスが...
-
MYSQLで全てのカラムから検索す...
-
ROUND関数で、四捨五入ができな...
-
DBエラーの意味
-
SELECT文で、指定カラム以外の...
-
GREATESTで NULLをスルーする方...
-
ホームページを作ろうと思いま...
-
インデックスについて
-
INDIRECT関数の代替方法は?
-
DBの定義のサイズを大きくし過...
-
type date にnullをinsert
-
テーブルの列数を調べたい
-
複数カラムに対するLIKE文の最適化
-
MySQL 改行コードを含む文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一部のカラムでdistinctし全て...
-
SELECT文で、指定カラム以外の...
-
UNIONする際、片方テーブルしか...
-
ホームページを作ろうと思いま...
-
AUTO_INCREMENTに0はダメ?
-
SQLでカラムを追加し、条件に合...
-
now()かCURRENT_TIMESTAMPか
-
カラムとコラムの使い分け
-
(初心者)MySQLやmaraDBで、crea...
-
GREATESTで NULLをスルーする方...
-
構造が異なる二つのテーブルをu...
-
sql , insert で空行(全ての列...
-
MYSQLで全てのカラムから検索す...
-
エクセルかワードで家系図を作...
-
Excel VBA
-
カラムをコピーして、新規カラ...
-
Mysql DATE型のDEFAULT値
-
ドロップダウンリストの連動し...
-
MySQLで論理名を取得する方法
-
MySQL(5.5)1テーブル内のカラ...
おすすめ情報