phpPgAdminを使ってデータの更新

このQ&Aのポイント
  • phpPgAdminを使用したPostgreSQLデータの更新方法について説明します。
  • 特定のkaiin_noに対応するt_tiketの値を「取扱っている」に更新する方法を探しています。
  • 文法エラーが発生しており、エラーメッセージには「operator does not exist: character = record」と表示されています。
回答を見る
  • ベストアンサー

phpPgAdminを使ってデータの更新

PostgreSQLのphpPgAdminを使ってデータの更新をしようと思うのですが 特定の kaiin_no を選んで その t_tiket の値を '取扱っている' に更新したいのですが 文法エラーが出ます。 文: update "store_table" set "t_tiket" = '取扱っている' where "kaiin_no" = ('100','101','103'); SQL エラー: ERROR: operator does not exist: character = record LINE 1: ...t_tiket" = '取扱っている' where "kaiin_no" = ('100... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. phpPgAdmin では、= や ( ) 、" の使い方に特徴があるようなのです。 WHERE kaiin_no IN ('100','101','103'); とすべきなのでしょうか? ご存知の方がいらっしゃればご教示くださいませ。

  • ya-ya-
  • お礼率42% (110/256)

質問者が選んだベストアンサー

  • ベストアンサー
  • kool_noah
  • ベストアンサー率33% (95/285)
回答No.1

update "store_table" set "t_tiket" = "取扱っている" where "kaiin_no" = ANY('{"100","101","103"}'); ではないですか? IN句使うなら、それでも問題なさそうですけど

ya-ya-
質問者

お礼

ご回答ありがとうございました。 '取扱っている' にしたらうまく更新できました!! 御礼申し上げます。。。 (正) update "store_table" set "t_tiket" = '取扱っている' where "kaiin_no" = ANY('{"100","101","103"}');

関連するQ&A

  • PostgreSQLのphpPgAdminを使って

    お世話になります。 PostgreSQL8.4.8のphpPgAdmin3.5.3を使ってデータを削除する際に 先ずデータをSELECT で表示させて確認後、 SQL編集 で SELECTを DELETE に書き換えて実行しましたが以下エラーが出ます ≪一覧確認用≫一覧表示はできました。 SELECT "kaiin_no","tenpo_no","tenpo_name" FROM "public"."store_table" WHERE "kaiin_no" IN ('1234',2222'); ≪削除用≫SELECT  → DELETEに変更 → 実行 → 以下エラー DELETE "kaiin_no","tenpo_no","tenpo_name" FROM "public"."store_table" WHERE "kaiin_no" IN ('1234',2222'); ≪エラー内容≫ ERROR: syntax error at or near "," LINE 1: SELECT COUNT(*) AS total FROM (DELETE "kaiin_no","tenpo_no",... ^ 文: SELECT COUNT(*) AS total FROM (DELETE "kaiin_no","tenpo_no","tenpo_name" FROM "public"."store_table" WHERE "kaiin_no" IN ('1234','2222')) AS sub 文法エラーのようなのですが 一覧が出来ているのに なぜ削除が出来ないのか 初心者で恐縮ですが ご教示頂ければ幸いです。

  • 日本語文字の抽出について

    SELECT * FROM pref WHERE pref_name='東京都'; としてもレコードが返ってきません。(レコード数が0になります。) 次にsubstringを用いて SELECT * FROM pref WHERE substring(pref_name) = '東京都'; としましたが、こちらでは下記のエラーになってしまいます。 何かよい方法はありませんんでしょうか? ERROR: function pg_catalog.substring(text) does not exist HINT: No function matches the given name and argument types. You may need to add explicit type casts.

  • Postgreの日付関数に関して教えてください。

    Postgreの日付関数に関して教えてください。 表9.30 日付/時刻関数の例を実行していますが、 make_ で始まる関数がすべて失敗します。 PostgreSQL 9.6.2文書 9.9. 日付/時刻関数と演算子 https://www.postgresql.jp/document/9.6/html/functions-datetime.html 表9.30 日付/時刻関数 select age(timestamp '2001-04-10', timestamp '1957-06-13') select age(timestamp '1957-06-13')  : : select make_date(2013, 7, 15) select make_interval(days => 10) select make_time(8, 15, 23.5) select make_timestamp(2013, 7, 15, 8, 15, 23.5) select make_timestamptz(2013, 7, 15, 8, 15, 23.5) make_dateの失敗のメッセージ ERROR: function make_date(integer, integer, integer) does not exist LINE 1: select make_date(2013, 7, 15) ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. ********** エラー ********** ERROR: function make_date(integer, integer, integer) does not exist SQLステート:42883 ヒント:No function matches the given name and argument types. You might need to add explicit type casts. 文字:8 何が悪いのでしょうか。

  • 特定カラムの値を変更したいのですが

    お世話になります。DB初心者です。 現在 、PostgreSQLのphpPgAdminを使っていまして 以下のようなDBがあり kaiin_no  t_name   t_chiket -------+-------+---------- 1001    太郎     なし 1002    次郎     なし 1003    三郎     なし 1004    四朗     あり 1005    五朗     あり 以下のようなSQLで目的のデータを表示できるのは解ったのですが SELECT "kaiin_no","t_name","t_chiket" FROM "public"."store_table" WHERE "kaiin_no" IN ('1001','1002','1003'); kaiin_no '1001','1002','1003' の t_chiket を 「なし」 から 「あり」 に変更すする方法をご教授いただけますでしょうか? お手数をおかけしますがよろしくお願いいたします。

  • SQL文で質問があります。

    商品マスタがあり、データは下記の感じで登録されています。  コード | 商品名  | 商品カナ | 分類コード ・・・ ---------------------------------------------------------  0001  | マウス  | マウス  | 01     ・・・  0002  | キーボード| キーボード| 01     ・・・  0003  | モニター | モニター | 01     ・・・          ・          ・          ・ SQL文で質問があります。 下記のSQLでは取得できるんですが・・・ SELECT * FROM M_SHOHIN WHERE code = ANY('{0001,0002,0003}'); 下記のSQLを実行したらエラーが出力されました。 SELECT * FROM M_SHOHIN WHERE code = ANY(  SELECT ARRAY_AGG(code) AS code FROM M_SHOHIN WHERE class_code = '01' ); ERROR: operator does not exist: character varying = character varying[] HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. なので下記のようにCASTをするようにして実行したらエラーは出力されなくなりましたがデータの取得ができませんでした。 SELECT * FROM M_SHOHIN WHERE code = ANY(  SELECT CAST(ARRAY_AGG(code) AS VARCHAR) AS code  FROM M_SHOHIN WHERE class_code = '01' ); どのようにすれば取得できますでしょうか。 説明が下手で申し訳ありませんがアドバイスいただけませんでしょうか。 データベースはPostgreSQL 8.4.9です。 宜しくお願いします。

  • PostgreSQLのUPDATE文につきまして

    お世話になります。 phpPgAdminで更新作業をしていまして 一件一項目の更新で update "store_table" set "tenpo_add" = '東京都1-1-1' where "kaiin_no" = '123456'; とした場合はうまく更新でできたのですが、以下のように複数項目の更新が文法エラーになります。 update "store_table" set "tenpo_post1","tenpo_post2","tenpo_add" = '123','4321','東京都1-1-1' where "kaiin_no" = '123456'; このようにした場合、  "," ←この部分が文法上おかしいとのエラーが出ました。 どのように記載すれば良いかご指導いただければ幸いでございます。。

  • 年齢計算

    以下のフィールド構成のテーブルがあるのですが 「birthday」フィールドの値を元に、現時点の年齢を計算して 「nenrei」フィールドに入れたいと考えています。 【player_tbl】 id     ID name   名前 birthday 誕生日(19950203のような形式でデータが入っています) nenrei  計算された年齢を入れる 以下のSQLを実行してもエラーになります。 update player_tbl set nenrei = extract(year from age(current_date, birthday)) ; SQL エラー: ERROR: function age(date, character varying) does not exist HINT: No function matches the given name and argument types. You may need to add explicit type casts. birthdayのところを工夫しないとダメだということは、なんとなくわかるのですが どのように変更すると実現できるのかわかりません。 age関数の中に、フィールド名を入れたい場合は、どのような記述になるのでしょうか? また、データ数は10万件くらいですが、一気に更新するのは難しいでしょうか? DBはPostgreSQLです。 よろしくお願いいたします。

  • 性能の改善について

    以下の(1)のSQLと(2)のSQLで性能が全然違います。原因は明示的に「1」を取得するようにしているからなのですが、改善する方法はないでしょうか? (1)SQL(遅い) SELECT 1, /*+ INDEX(T_UKERUI T_UKERUIP1) */ T.NO_UKE FROM T_UKE T ,M_OFF O ,M_KAI K WHERE T.CD_OFR = O.CD_OFR AND T.CD_KAIIN = K.CD_KAIIN AND T.CD_STS IN (3, 4) AND T.CD_SHIP = 0001 AND T.NO_ADDNO = 0 (1)SQL(速い) SELECT /*+ INDEX(T_UKERUI T_UKERUIP1) */ T.NO_UKE FROM T_UKE T ,M_OFF O ,M_KAI K WHERE T.CD_OFR = O.CD_OFR AND T.CD_KAIIN = K.CD_KAIIN AND T.CD_STS IN (3, 4) AND T.CD_SHIP = 0001 AND T.NO_ADDNO = 0

  • postgreSQLのエラー表示について

    質問させて頂きます。 初めてpostgreSQLをさわっている初心者なのですが、 今まで、あるグループウェアをりようして、サーバに WEBベースで接続し、情報を表示したり、データベースの内容を登録・削除したりしていたのですが、ある時からブラウザに エラーメッセージしか表示されなくなりました。 そのエラーメッセージは以下の通りです。 Invalid SQL: SELECT c.cab_dept_code as dept_code, c.cab_category_id as folder_code, c.cab_category_name as folder_name, f.fullpath_name as dept_fullname, dept2fulldept_pad(f.dept_code) as dept_fullcode, cab_cate_fullpath(c.cab_dept_code, c.cab_category_id) as folder_fullcode, c2.take_cat_id FROM dept_fullpath f LEFT OUTER JOIN cab_category c ON (c.cab_dept_code = f.dept_code) LEFT OUTER JOIN (SELECT t.cab_dept_code, take_cat_id(t.cab_dept_code,'hashi') AS take_cat_id FROM (SELECT DISTINCT cab_dept_code FROM cab_category) t ) c2 ON (c.cab_dept_code = c2.cab_dept_code) ORDER BY dept_fullcode, folder_fullcode PostgreSQL Error: 1 (ERROR: function cab_cate_fullpath(bigint, bigint) does not exist HINT: No function matches the given name and argument types. You may need to add explicit type casts.) Session halted. 長々と書いてすいません。重要な部分が分からないので一応全文のせました。 このエラーメッセージはどういう意味なのでしょうか? 自分なりに調べてみたのですが、いまいちよく分かりません。 また、エラーの解決方法などが分かる方がいらっしゃれば教えて頂けないでしょうか? よろしくお願いします。

  • Accessプロジェクト ストアドプロシージャによるデータ更新

    Access2003 Accessプロジェクトのストアドプロシージャでテーブルを更新する処理を作りたいのですが・・・。 内容は、テーブルAにある項目「更新区分」を "0" から "1" に更新します。ただし更新する条件として、テーブルBに登録されている、全てのロットNoと、テーブルAのロットNoが一致するものだけです。 WHERE条件に・・・  WHERE テーブルA.LotNo = テーブルB.LotNo とすると、「ADOエラー:列のプレフィックステーブルBは、テーブル名と一致しないか、クエリ内の別名と一致しません」となります。 初歩的な質問ではずかしいですが、よろしくお願いします。