- ベストアンサー
条件指定でのデータ削除について
- 質問者は、delete_allで条件を指定してデータを削除したいが、シングルクォーテーションの問題でうまくいかない状況にある。
- 質問者は、arr_sを削除キーとして使用して関連テーブルの削除を行っているが、他の方法についても知りたいと述べている。
- 質問者は、search_attr_hashの条件に基づいてデータを取得し、arr_sにカンマ区切りで保存している。その後、arr_sを使用して関連テーブルの削除を行っている。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- このようなDELETEはできますか?
こんにちは。DELETE文の削除条件について教えてください。 例えば下記のような2つのテーブルがあったとします。 ATABLE KEY1(ID) KEY2(DATE) ・・・・・・・・・・ ------------------------------------------------ 100000 2004/09/01 ・・・・・・・・・・ 200000 2004/09/01 ・・・・・・・・・・ 300000 2004/09/01 ・・・・・・・・・・ BTABLE KEY1(ID) KEY2(DATE) CODE ・・・・・・・・・・ ------------------------------------------------ 100000 2004/09/01 0 ・・・・・・・・・・ 200000 2004/09/01 0 ・・・・・・・・・・ 300000 2004/09/01 1 ・・・・・・・・・・ この2つのテーブルで、BTABLEのCODEが1のレコードにKEYで関連付くATABLEのレコードを削除したいのです。 プログラムの中では対応できるのですが、SQL1文で実行させることはできるでしょうか? とりあえず下記のように作ってみました(いたずらに長いかもしれませんが)。 DELETE FROM ATABLE WHERE KEY1 IN (SELECT ATABLE.KEY1 FROM ATABLE,BTABLE WHERE ATABLE.KEY1 = BTABLE.KEY1 AND ATABLE.KEY2 = BTABLE.KEY2 AND BTABLE.CODE = 1) AND KEY2 IN (SELECT ATABLE.KEY2 FROM ATABLE,BTABLE WHERE ATABLE.KEY1 = BTABLE.KEY1 AND ATABLE.KEY2 = BTABLE.KEY2 AND BTABLE.CODE = 1) これで良い/悪い、もっと簡潔にできる、などありましたら是非お聞かせ願えますでしょうか? よろしくお願いします。
- ベストアンサー
- Oracle
- MYSQLのDELETE構文について
MYSQLのDELETE構文について phpmyadmin上でDELETE構文を使ってデータを一括削除したいと思っています。 このようなテーブルレコードがあります。 テーブル名 : officeinfo ID name address post_date 1 A会社 東京 1130128000 2 B会社 大阪 1130129111 3 C会社 東京 1130132000 4 D会社 東京 1130132568 条件 ・addressが東京 ・post_dateが1130132000より前(1130132000も含む) この条件に当てはまるデータを全て削除したいのですが、この場合どのようなSQLを書けばいいのでしょうか? ためしに下記をやってみましたがエラーになってしまいました。 DELETE * FROM `officeinfo` WHERE `post_date`<=1130132000 and `address`=東京; #1064 - You have an error in your SQL syntax 次に下記を試しましたが同じエラーになってしまいました。 DELETE FROM officeinfo WHERE `address`=東京 ORDER BY `ID` LIMIT 2; どのように直したらいいのでしょうか?
- ベストアンサー
- MySQL
- EclipseでMySQLにDELETE文を二つまとめて送れない
環境 WindowsXP Eclipse3.4 MySQL5.1 Server str="DELETE FROM table1 where id=28;DELETE FROM table2 where id=28";という文を実行したのですが 動作しなくて困っています。分かる方がいましたら教えてください。 よろしくお願いします。 st.executeUpdate(str);を利用し、DELETE文ひとつの場合は実行できました。 MySQLServerに直接入力しても実行できました。 しかしEclipseから読み込んで実行すると com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELETE FROM table2 where id=28' at line 1 というエラーがでてわかりません。 分かる方がいましたらよろしくお願いします。
- ベストアンサー
- Java
- SQL : たしかに DELETE したの?
ありがちな処理かと思いまして質問させていただきます。 SQLで DELETE を行う際、WHERE で絞り込んだ対象行がなくても、 「エラーは返ってこない」 ということですが、NOT FOUND判定はするのでしょうか。 ごく単純に、削除しようとしたデータが実際にあったのかを確認したいのです。 やろうとしている処理は、次のようなものです。 DELETE FROM a_tbl WHERE NOT EXISTS (SELECT row1 FROM b_tbl WHERE row1 = 'input_data' ) AND NOT EXISTS (SELECT row1 FROM c_tbl WHERE row1 = 'input_data' ); ようするに、他のテーブルに、すでにない行であることが前提で、 a_tbl から DELETE したことを確認したいのです。 Pro*C内で実行するのですが、一般に同じだと思います。 キホンのキかもしれませんが、よろしくお教えください。
- ベストアンサー
- その他(データベース)
- SELECT出来るのにDELETE出来ないのはなぜ
MySQLで下記SELECTレコードを削除したいと思い、 DELETEへ変えたら文法エラーになります。 SELECT * FROM `piyo` AS a LEFT JOIN `hoge` AS c ON a.`hoge_id` = c.`hoge_id` WHERE c.`x_id` =13 DELETE * FROM `piyo` AS a LEFT JOIN `hoge` AS c ON a.`hoge_id` = c.`hoge_id` WHERE c.`x_id` =13 どう書けば良いでしょうか?
- ベストアンサー
- MySQL
- PL/SQLのDELETE文について
PL/SQLでDELETE文を書こうとしているのですが、 文法がわかりません。。。 分かる方がおられましたら、教えてくださいm(_ _)m 今、TABLE1を削除したいのですが、条件がいろいろあって、 以下のように書いてみたのですがダメでした。 こういう書き方は、できないんでしょうか・・・。 削除条件は、TABLE2に存在し、かつ、TABLE2のTENSUが0のもので、 TABLE3が存在しないものです。 DELETE TABLE1 FROM TABLE1 ,TABLE2 ,TABLE3 WHERE TABLE1.ID = TABLE2.ID AND TABLE2.TENSU = 0 AND Not Exists (SELECT TABLE3.ID FROM TABLE3 WHERE TABLE3.ID = TABLE2.ID) 説明が下手なので、うまく、伝わっているか、心配なのですが・・・、 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- MySQLで全文検索について
MySQLで全文検索を行いたく、色々と調べ、試行錯誤をしたのですが どうしてもできないので、mysqlでの全文検索のやり方がわかるかたがいらっしゃいましたら お教え願えますでしょうか。 私がやったこと 0。Mysqlのバージョン 5.5.23をインスコ my.confにft_min_word_len=1を追加 mysql再起動 1。MyISAM型のbookテーブルを作成(utf8_general_ciでとりあえず idとsearch_wordsという2カラムのみ idをprimaryに設定) 2。検索対象であるsearch_wordsをFulltext型に変換 sql> alter table book add fulltext( search_words ); 3。データを登録 insert into book (id, search_word) value (1, '夏目漱石 こころ natsume souseki kokoro BOOK-NO-012 時は明治末期。夏休みに鎌倉へ旅行をしていた「私」は鎌倉に来ていた「先生」と出会い交流を始め東京に帰った後も先生の家に出入りするようになる。先生は奥さんと静かに暮らしていた。先生は私に何度も謎めいた、そして教訓めいたことを言う。私は、先生に過去を打ち明けるように迫ったところ来るべき時に過去を話すことを約束した。'); 4。mecabで分かち書きした、「夏目」「漱石」をスペースで区切った文字で検索 っがしかし、検索結果が帰ってこない 実行してみたSQL select * from book where match( search_word ) against( '夏目 漱石' IN BOOLEAN MODE); select * from book where match( search_word ) against( '+夏目 +漱石' IN BOOLEAN MODE); select * from book where match( search_word ) against( '"夏目 漱石"' IN BOOLEAN MODE); select * from book where match( search_word ) against( '"+夏目 +漱石"' IN BOOLEAN MODE); select * from book where match( search_word ) against( '"+夏目 +漱石"' IN BOOLEAN MODE); select * from book where match( search_word ) against( '"*夏目 *漱石"' IN BOOLEAN MODE); select * from book where match( search_word ) against( '"*夏目* *漱石*"' IN BOOLEAN MODE); 「夏目漱石」とひとくくりにした文字列で検索すると、レコードが帰ってきます また、against( 'natsume souseki' IN BOOLEAN MODE); も帰ってきます 実際にやってみたいことは、上記の文章で「先生」「鎌倉」「私」「夏目」の4語で検索すると 上記のレコードが帰ってくるということがやりたいですのですが、 select * from book where match( search_word ) against( '夏目 先生 鎌倉 私' IN BOOLEAN MODE); のSQLや対象文字列に+や*を付けたものを実行しても引っかかりませんでした。 私が行った設定/sqlに不備がございましたらご指摘/ご指導いただけませんでしょうか。 よろしくお願いいたします。
- 締切済み
- MySQL
- DELETE構文
今、PostgreSQLの中にあるデータを 削除しようとしていますが、構文がDELETE構文が正しくなく 上手く削除することができせん。 環境→WindowsXP register_globals=offです。 ※フォームの部分は、文字制限の為、省略させて下さい。 画面構成 //ここにPostgreSQLから取得されたデータが //乗っています。 ID[入力欄] Name[入力欄] Score[入力欄] (削除ボタン) 構文 //PostgreSQLに接続 $conn = pg_pconnect("user=postgres password=grjtf dbname=mytbl"); //登録データを削除する if(isset($_POST["action"]) && $_POST["sign"] == '一行削除') { //IDが書かれていた場合 if($_POST["id"]) { //データを削除する $sql3="DELETE FROM mytb(id) WHERE $_POST['id'] = ('{$_POST['id']}')"; //データベースに問い合わせて、クエリを実行する pg_query($conn,$sql3); //成功メッセージ print "データを一件削除しました。<br>"; } else { //失敗メッセージ print "IDが書かれていないため、削除できません。<br><br>"; } }
- 締切済み
- PHP
- 別テーブルからSELECTした値を持つ行を削除するSQLは?
削除 SQL がわかりません。 SQL-1 SELECT id FROM table2 WHERE date_in IS NULL; これで取得したidを持つレコード(別テーブル)を削除したいのですが、 どうすれば組み合わさるのでしょうか? DELETE FROM table1 WHERE id=???
- ベストアンサー
- その他(データベース)
- INSERT,DELETEを同時に
$sql = "INSERT INTO daykg(id,name,day,kg)select distinct id,name,'$day','-1'from daykg"; $sql = "DELETE FROM daykg WHERE distinct ORDER BY day DESC LIMIT 5,1"; 上で会員全員にインサート、下で会員全員の五行目から一行削除としているつもりですが、合ってますか??
- ベストアンサー
- PHP
お礼
おーうまくdeleteできました! カンマ区切りにしなくても配列を渡せば通るんですね… 検索してもわからなかったので、とても助かりました。 本当にありがとうございます。