• ベストアンサー

クエリについて

drop table if exists テーブル名; というふうにテーブルが存在していたら削除でありますが テーブルが存在していたら、 あるテーブルのあるカラムの値が1であるレコードを削除する というクエリをどのように書いたらいいか教えてください。 mysqlのバージョンはversion: 4.0.22です。

  • MySQL
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

DELETE IGNORE FROM `HOGE` という書式があるようですが、4.1.1以降のようですが 使用しているバージョンが古いこともあり難しいですね とくに4.0系まではストアードプロシージャも弱いですからね そもそもあるかわからないテーブルをめくらでdropしたり deleteしたりするのは無謀ですのでなんらかの外部プログラムなどで 補足しながらやると良いのではないでしょうか?

kadai1800
質問者

補足

yambejpさん どうもありがとうござます。 外部プログラムにて対応するしかなさそうですね・・。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

delete form テーブル where カラム=1 とかでよいのでは?

kadai1800
質問者

補足

yambejpさん回答ありがとうございます。 すみません、 delete form テーブル where カラム=1 を実行しますとテーブルが存在しなかった場合 エラーとなってしまうので そのエラーを回避したいのです・・。 テキストにまとめてクエリを実行しております為、 エラーにはしたくないのです・・・。

関連するQ&A

  • DoCmd.RunSQL "DROP Query

    アクセスVBAで DoCmd.RunSQL "DROP Query クエリ1;" はできないのですか? DROP TABLE または DROP INDEX ステートメントの構文エラーです。 (エラー 3295) となります。 テーブルを削除する場合は DoCmd.RunSQL "DROP Table テーブル1;" でエラーにならずにできました。 DROPはクエリに対しては使えないのか教えてください。

  • drop tableで削除されず空になるだけ

    お世話になります。 現在mysql 4.1.17を使用してテーブルが2000ほどあります 下記のクエリーをphpからループで実行し不要になったテーブルを500ほど削除しました。 @mysql_query("drop table table_$number"); 一旦は削除されたように見えるのですが、あらためて確認をするとテーブルの内容が空になっただけで実際には削除されていませんでした。 権限の問題か考えたのですが一つだけですと削除できます。 どなたか原因を思いつく方はおられないでしょうか。 よろしくお願い致します。

  • MySQLのカラムを削除したが,それを復元したい

    MySQLのテーブル内のカラムを再編成しようとしています. そこで,カラムAをALTER TABLE DROPで削除しました. その直後,カラムAは必要であることに気づきました. テーブルのバックアップを取っていないので,困ります. この削除コマンドをキャンセル(UNDO)したり,削除したカラムを復元できますか?

  • mysqlデータベースリストア

    MySQL初心者です。 基本的な質問ですが、教えてください。 MYSQLデータベースのバックアップは、コマンドラインからmysqldumpでバックアップを行うと思います。 CMD>mysqldump -u(ユーザーグループ) -p(パスワード) (データベース名) > (バックアップファイル名).sql バックアップSQLを使って再度リストアで入れなおす場合は、 drop database (データベース名);と create database (データベース名); を実行してから行う必要があるのでしょうか? (バックアップファイル名).sqlの中身を見てみると、 CREATE TABLE '(テーブル名)' (・・・・ ・・・)の前に DROP TABLE IF EXISTS '(テーブル名)'; のようにテーブルのdropをしてからの処理はあるのですが。

    • ベストアンサー
    • MySQL
  • PostgreSQLの「not null」制約の追加

    こんにちは。いつもお世話になります。 PostgreSQLのversion7.2.8で、「not null」制約の追加、削除の方法をおたずねします。よろしくお願いします。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 SET NOT NULL; で試したところ、syntaxエラー(構文エラー)で失敗。 ALTER TABLE テーブル名 ALTER COLUMN カラム名 DROP NOT NULL; で試してみても、同じくsyntaxエラーです。 version7.2.8が原因でしょうか? また、version7.2.8でも「not null」制約の追加、削除が できる他の方法はありますでしょうか? テーブルを作り直さずに、 既存のテーブルのカラムへの制約の追加、削除をしようとしています。 よろしくお願いします。

  • MySQLからフィールド名のリストを取り出し、一部のフィールド名を除外したい場合

    PHP + MySQLにて テーブルからフィールド名だけを取得し、さらに一部のフィールド名を除外したいです。 レコードじゃないのでis not構文は使えませんでした。 何かいい方法があれば教えてください。 $sql = "select * from table"; //tableテーブルからフィールド名を取り出し $rs = mysql_query($sql); $fields = mysql_num_fields($rs); $column = array(); for ( $i=0; $i<$fields; $i++ ) { $column[$i] = mysql_field_name($rs, $i); }

    • ベストアンサー
    • MySQL
  • 難しいクエリなので教えてください。

    データベース:MYSQLのバージョン4です。 1ヶ月予約していない人を抽出せよ、というクエリです。 テーブルは 顧客テーブル(t_customer)と予約テーブル(t_yoyaku)です。 顧客テーブルのカラムは、顧客番号(no)、氏名(name)です。 予約テーブルのカラムは、顧客番号(no)と予約日付(day)です。 以下のようにレコードが登録されています。 顧客テーブル 顧客番号 氏名 1  鈴木太郎 2  佐藤一朗 3  高橋次郎 4  山田五郎 予約テーブル 顧客番号 予約日付 1  2008-4-10 1  2008-5-11 1  2008-6-12 1  2008-7-10 2  2008-5-12 2  2008-6-10 3  2008-6-11 3  2008-8-12 ※予約テーブルに登録されていない場合(山田五郎)も合わせて 抽出 すみませんが、上記のクエリについてどなたか 教えてください。お願いします。

    • ベストアンサー
    • MySQL
  • 複数行のクエリを、まとめて実行するには?mysqli_multi_query()?

    PHPとMySQLの環境です。 複数行のクエリを、まとめて送って取得したいと考えています。 ですが、今試行錯誤しているのですが、うまく行かない状態で、クエリをきちんと実行できません。 処理の流れとしては、 [DBにアクセス]→[2つのクエリの実行]→[データ取得]→[DBをクローズ] でいいのではないかと思ってやっているのですが、 2つのクエリを実行するのはなにやら無理なような記述もウェブ上で拝見しました。 その場合、同じDBの同じテーブル内の異なるデータを取得したいだけなのに、 わざわざ、一度DBにコネクトして、切断、そしてまたコネクトして、切断ということを繰り返さないとダメなのでしょうか。。? そもそも同一PHPファイル内で二度も接続、切断はすべきではないですか? ちなみに、 一つ目のクエリでは、テーブル(table_a)のレコード数をカウントしてPHP側で取得するという流れの処理です。 $query = "SELECT count(*) FROM `table_a`"; もう一つのクエリは、テーブル(table_a)の最新のレコードの、idカラムのidを取得するだけのものです。 $query = "SELECT arrayset FROM `table_a` ORDER BY id DESC LIMIT 1"; この処理を一度のクエリで入れ込むことは可能でしょうか。 それぞれ単独では実行できます。 PHPでこのような関数 mysqli_multi_query() を見つけて色々調べているのですが、 いまだに使用方法がきちんとつかめない状況です。 これで複数のクエリを送ることは可能でしょうか。 アドバイス宜しくお願いします。

    • ベストアンサー
    • MySQL
  • mysqldumpについて

    MySQL初心者です。 すみません。教えてください。 mysqldump -u(ユーザー) -p(パスワード) --default-character-set=sjis (データベース名) > (ファイル名).sqlでバックアップを実行すると自動的に1つのsqlファイルに全テーブル分、以下のように生成されているのですが、リストアする時は既存のデータベースを削除(drop database データベース名;) する必要がない。又、権限付与(grant)もする必要が無いということになりますでしょうか? 逆にdatやdumpファイルとしてバックアップしているものについては、データベースの削除&権限付与等行う必要があるということになりますでしょうか? DROP IF EXISTS 'テーブル名' ; CREATE TABLE 'テーブル名' ( ) INSERT INTO 'テーブル名' VALUES ( )

    • ベストアンサー
    • MySQL
  • カラムの削除が出来ません

    Microsoft SQL2000を使用しているのですが あるテーブル(table_A)のカラム(column_A)を削除したいので 以下のようなクエリ及び、GUIでの削除を実行しました。 ----------------実行クエリ----------------------- ALTER TABLE dbo.table_A DROP COLUMN column_A GO ------------------------------------------------- ところがどちらの削除を方法を実行しても以下のようなエラーメッセージが返されます。 -----------------エラーメッセージ---------------- テーブル 'table_A' - テーブルを修正できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server] 行 2: 'column_A' の近くに無効な構文があります。 ------------------------------------------------- カラム名の変更などはできるのですが どうしても削除だけ出来ません。 なお、このカラムは主キーとしての設定や 他のテーブルへの外部キーとしての設定を行っていません。 型は[varchar] (20) COLLATE Japanese_BIN NULLです。 どなたか対処方法をご存知の方がおられましたら ご回答よろしくお願いします。 それでは失礼します