#1136 - Column count doesn't match value count at row 1 の原因について
- テーブルaでtestカラムがあるにも関わらず、UPDATE文を実行する際に#1136 - Column count doesn't match value count at row 1というエラーが発生しています。
- トリガが動いていないか等、調べたが原因がわかりません。どのような原因が考えられるでしょうか?
- また、SELECT文では1件のレコードが取得できます。
- ベストアンサー
#1136 - Column count doesn't match value count at row 1 の原因について
テーブルaでtestカラムがあるにも関わらず以下のSQLを実行すると、 #1136 - Column count doesn't match value count at row 1 のエラーとなります。 UPDATE a SET test = '0' WHERE a_id = '1' AND b_id = '2' AND c_id = '3' トリガが動いていないか等、調べたのですが原因がわかりません。 考えられる原因は何があるでしょうか? ちなみに、以下のSQLでは1件のレコードが取得できます。 SELECT test FROM a WHERE a_id = '1' AND b_id = '2' AND c_id = '3'
- php4
- お礼率42% (373/888)
- MySQL
- 回答数1
- ありがとう数6
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
insertでなく、updateで発生していますか? このエラーは、例えば以下のようなケースで発生します。 create table t1 (c1 int, c2 int, c3 int); insert into t1 values(1,1); 値の個数と、列の個数が合っていないといったエラーです。
関連するQ&A
- 複数カラムを跨いだCOUNTができない
以下のようなDB内に顧客id(ユニーク)とhob1,hob2,hob3のようなカラムがありまして、hob1,hob2,hob3には任意で趣味を表す値が入っております。 【hoge_db】 id | hob1 | hob2 | hob3 1 | 1 | 2 | 3 2 | 2 | 3 | NULL 3 | 3 | NULL | NULL 3 | NULL | NULL | NULL ・・・ 【SELECTしたい値】 趣味1:1名 趣味2:2名 趣味3:3名 この各趣味を表す値に対する顧客数を求めたいのですが、3つのカラム全てに対してCOUNTをする方法が分かりません。。 どうかSQLにお強い方、お力を貸して頂けないでしょうか?
- ベストアンサー
- PostgreSQL
- LEFT JOINの記述の仕方について
お世話になっております。 LEFT JOINの記述の仕方でご確認したい事があります。 ご教授頂けますようお願いいたします。 【ご質問内容】 以下のようなSQLをLEFT JOINを使用して記述する場合、 どのように記述すればよろしいのでしょうか? SELECT A.* FROM A B C WHERE A.COLUMN1 = B.COLUMN1 AND B.COLUMN2 = C.COLUMN2(+) AND B.COLUMN3 = C.COLUMN3(+) AND A.COLUMN4 = C.COLUMN4(+) ;
- 締切済み
- MySQL
- distinct をexistsに変換する
distinctをexistsに変換した方がパフォーマンスが良いようで、 例えば以下の例があるとします ---------------------------------- (前)SELECT DISTINCT a.ID1, a.NAME1 FROM TABLE1 a, TABLE2 b WHERE a.ID1 = b.ID2 (後)SELECT a.ID1, a.NAME1 FROM TABLE1 a WHERE EXISTS ( SELECT 'X' FROM TABLE2 b WHERE a.ID1 = b.ID2) ---------------------------------- もっと複雑なSQLの場合、EXISTSに変換できるのでしょうか?。複雑なSQLとは、 「複数のテーブルからカラムを取得」「テーブル結合が2つ以上」「外部結合」 などのSQLで、以下に例を示します。 (例)SELECT DISTINCT a.ID1,a.NAME1,b.ID2,b.NAME2,c.ID3,c.NAME3 FROM TABLE1 a,TABLE2 b,TABLE3 c WHERE a.ID1 = b.ID1(+) AND a.ID1 = c.ID1(+)
- ベストアンサー
- Oracle
- お世話になってます。
お世話になってます。 SQL初心者です。 現在、ORACLEでSQLを作成しているのですが、「ORA-00920」と「ORA-02063」が 発生し困っています。 「ORA-02063」の原因は調べてみると「ORA-00920」が原因の可能性があるみたいです。 「ORA-00920」のメッセージには「関係演算子が無効です。」とありますが、 調べてみてもよくわかりません。 実行するSQLは以下のような感じです。 ■SQL文 with テーブルA as( SELECT文 取得カラムA, 取得カラムB, 取得カラムC ), テーブルB as( 取得カラムA, 取得カラムB, 取得カラムC ) SELECT * FROM テーブルA A_TABLE, テーブルB B_TABLE WHERE A_TABLE.取得カラムA = B_TABLE.取得カラムA (+) AND A_TABLE.取得カラムB = B_TABLE.取得カラムB (+) AND A_TABLE.取得カラムC = B_TABLE.取得カラムC (+) ***ココマデ*** ビューの作成はうまくいっているのですが、 テーブルAとテーブルBを使用したSQL文でエラーになっているようです。
- 締切済み
- Oracle
- 行のカウントを2種類を1つの文で発行したい
こんにちは質問させてください。 商品が登録されているテーブル A に以下のカラムがあるとします。 id(int), name(varcahr), dt(datetime) id には 店を識別す固有の番号がふってあり、 name には 商品名、 dt には商品を登録した日付が入っているものとします。 やりたいことは ”id が 「1」 である全商品数” と ”今月登録された商品の数” を出力したいのです。 id が 1 である商品の数は以下のSQLで取り出せます。 SELECT COUNT(*) FROM ( SELECT * FROM A WHERE A.id='1' ) AS tbl1 id が 1 で 今月登録された商品の数は以下のSQLで取り出せます。 SELECT COUNT(*) FROM ( SELECT * FROM A WHERE A.dt BETWEEN DATE( DATE_SUB( NOW(), INTERVAL DAYOFMONTH( NOW() )-1 DAY) ) AND LAST_DAY( NOW() ) AND A.id='1' ) AS tbl1 これをひとつのSQLにまとめるにはどうしたらいいのでしょうか…。 宜しくお願い致します。
- ベストアンサー
- MySQL
- 重複データの抽出方法(複数項目)
以下のようなテーブルからc列とd列のデータが重複しているレコードを取得したいために、以下のSQLを試してみました。 a列|b列|c列|d列 ---|---|---|--- 01 |01 |01 |01 02 |01 |01 |01 03 |02 |01 |03 04 |02 |02 |03 05 |01 |01 |02 06 |02 |02 |03 select * from テスト where c in (select c from テスト group by c,d having count(*)>1) and d in (select d from テスト group by c,d having count(*)>1) そうしたところ、以下の結果になってしまいました。 想定では、○のレコードだけ抽出できると思ったのです。 ×のレコードを抽出したくないのですが、SQLのどこが 間違っているのでしょうか? a列|b列|c列|d列 ---|---|---|--- 01 |01 |01 |01 ○ 02 |01 |01 |01 ○ 03 |02 |01 |03 × 04 |02 |02 |03 ○ 06 |02 |02 |03 ○ (使用DB)SQLServer2000
- ベストアンサー
- SQL Server
- 入れ子を使わずにレコードの総計を出したい
こんにちわ。PostgreSQLのSQL文について質問させてください。 以下のSQL文を実行したとき、 # select c.id from C c left join S s on (s.id=c.id) where c.num = 1 group by c.id having count(s.id) >= 5; id ---- 7 5 (2 rows) というデータが表示されるんですが、このSQL文で抽出したデータの総件数を求めるにはどうしたらいいでしょうか? 入れ子を使うと、 # select count(*) from (select c.id from C c left join S s on (s.id=c.id) where c.num = 1 group by c.id having count(s.id) >= 5) tmp; というふうに書け、 count ------- 2 (1 row) と表示されるのはわかりますが、入れ子を使わずに上のように表示させるにはどうしたらよいでしょうか? よろしくお願いいたします。
- 締切済み
- PostgreSQL
- phpMyadminとPHP上からの違い?
おせわになります よろしくお願いします SELECT COUNT(*) FROM テーブル名 WHERE dee = 0 AND Fee LIKE '%文字%' というSQL文があり、 phpMyadmin上からSQLを実行すると 4と表示されるのですが PHPから $sql = "SELECT COUNT(*) FROM テーブル名 WHERE dee = 0 AND Fee LIKE '%文字%'"; $result = mysql_query($sql,$conn); $row = mysql_fetch_row($result); とすると0、$row[0]は0となります 特にエラーの表示もなく データベースへの接続も問題ないようなのですが 原因がわかるかたいらっしゃいましたら 教えて下さい 以上よろしくお願いします
- ベストアンサー
- PHP
- 複数のテーブルにまたがるDELETE
カラム構成が同じのtable_Aとtable_Bがあります。 DELETE FROM table_A,table_B WHERE Column_1='you' AND Column_2='his' ORDER BY datetime LIMIT count といった具合に、 table_Aとtable_Bにまたがってdatetimeカラムが小さい順にcountの数だけ削除しようとしていますが、上記のSQL文ではエラーが出てしまいます。 誤りをご指摘願えればと存じます。よろしくお願いいたします。 versionはMySQL - 5.0.24-community-ntです。
- 締切済み
- MySQL
お礼
原因はトリガで、INSERT INTO VALUES(1,2,3)と し、カラム名の指定がなかったためでした。 ありがとうございます。