• ベストアンサー

途中に追加

こんにちは。 いきなりですが、MySQLで no name ------------------ 1 太郎 2 花子 3 明 とあるテーブル('example')を、 no name ------------------ 1 太郎 2 花子 4 道子 3 明 というふうに、2の後に4を追加したいのですが、やり方がわかりません。 解決方法をご伝授ください。お願いします。

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

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

リレーショナルデータベースでは、テーブルに格納されている行(レコード)に順番はありません。SELECT文のORDER BY句などで取出す順番を指定できるだけです。 ORDER BY句を記述しないとINSERTやUPDATEした順番に取出されることが多いようですが、そのような仕様はありませんので、たまたま、その順番になっていると考えたほうが良いでしょう。 さて、レコードを決められた順番で取出したい場合は、「INTEGER UNIQUE NOT NULL」などの属性で順番を設定する項目を作ると良いでしょう。 例) --------------------------------------------------------------- no name od ------------------ 1 太郎 1 2 花子 2 3 明  4 4 道子 3 ------------------------------------------------------------------- 上記のテーブルのレコードを、od列の順番で取出すときは下記の様にすれば良いです。 SELECT * FROM example ORDER BY od;

参考URL:
http://www.atmarkit.co.jp/fnetwork/rensai/sql02/sql1.html
hideaki200x
質問者

お礼

お返事が大変遅くなり、申し訳ございませんでした。 ご回答いただいた方法で解決できました。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQLServerでの複数テーブルからのデータ抽出

    皆様、お知恵を拝借させてください。 現在、SQLServer + VB.netで開発を行っていますが、どうしてもうまくいかないので悩んでいます。 ロジックを組めば解決できるのは、わかっているのですが、SQL文だけで解決したいのです。 よろしくお願いします。 やりたいことは、複数テーブルからの同一IDの抽出です。 IDで単一化 テーブル【現在】を優先して抽出 テーブル【履歴】のみ存在する場合、履歴NOの大きい方を抽出 テーブル【現在】  ID 名前 趣味 ------------------  10 太郎 釣り  20 次郎 ゴルフ テーブル【履歴】  ID 名前 趣味 履歴NO -------------------------  10 太郎 将棋 01  10 太郎 囲碁 02  30 花子 園芸 01  30 花子 料理 02 求めたい結果は 10 太郎 釣り 20 次郎 ゴルフ 30 花子 料理 です。よろしくお願いします。

  • テーブルデータの絞込み条件

    MySQL4.1、PHP Version 4.3.9を使用しています。 下記のような2つのテーブルA,Bから テーブルAに存在するキー(no)のデータのみ取得したいのですが、 どのようにWHERE文を書いたら一回のSQL文で取得出来るのでしょうか。 テーブルA no |name 1 |たろう 2 |はなこ 3 |じろう テーブルB no |old 1 |16 3 |18 取得したい結果テーブル no |name 2 |はなこ 良い方法が見つかりません。 宜しくお願いします。

  • 次の条件を満たすSQL文をご教示下さい。

    テーブル名: list no | first_name | last_name | comment ----+------------+-----------+--------- 1 | 太郎 | 山田 | ほげ 2 | 次郎 | 田中 | ふが 3 | 花子 | 山田 | ぴよ 4 | 三郎 | 佐藤 | ぴよ 5 | 太郎 | 山田 | ぴよ 6 | 次郎 | 田中 | ふー 7 | 三郎 | 佐藤 | ふー 8 | 花子 | 山田 | ふー 上記の表から同じ”last_name”を持つ人の”first_name”と”last_name”を重複無しで抽出する(下記のような結果)SQL文は作成可能でしょうか。 結果 first_name | last_name ------------+----------- 太郎 | 山田 花子 | 山田 宜しくお願いします。

  • 2つのテーブルへのデータの追加方法

    初歩的な質問なのですが、わけがわからなくきてなってしまいました。 あるショッピングASPから、以下のようなトランザクションデータが CSVでダウンロードできます。   山田太郎,example@example,○○セット,2980,…,他、住所・TELなど トランザクションテーブルと顧客マスターテーブルをもつデータベースがあるとします。 そして、上記の山田太郎さんは、一度、買い物をしたことがあり、 顧客マスターテーブルには、山田さんのデータが入っているものとします。 このようなデータベースにデータを格納したい場合、 どのような方法があるのでしょうか? SQL文のINSERT、IMPORTコマンドなどいろいろ方法はあると思いますが、 住所変更がない場合と、あった場合(UPDATEが必要な場合)とで、 どのようにすればよいか、それぞれ教えていただけると大変幸いです。 ちなみに、DBはMySQLを使っていますが、 概念がわかれば、他DBのSQL文など多少の方言があってもかまいません。 どうかよろしくお願いいたします。

  • 複数の値を一度にUPDATEするには?

    既存テーブル(Aテーブル)から複数存在するデータのみを一度に、別テーブル(Bテーブル)にUPDATEしたいのですが可能でしょうか? 例 Aテーブル(idはAIです) id fieldI fieldII 1  太郎   1 2  花子   1 3  花子   1 4  一郎   1 5  太郎   1 Bテーブル(idはAIではない) id fieldI fieldII  10  太郎   2  ← ここを1から2へ変更 12  花子   2  ← ここを1から2へ変更 上記のようにAテーブルとBテーブルの列の構成は同じで、 fieldIは同じ値が格納されていますが、idは違っています。 上記のような場合、太郎と花子を同時にUPDATEするにはどのようにすれば、 良いのでしょうか? どなたか、お知恵をお貸し下さいませ。 DB:Mysql5以降 宜しくお願いします。

    • ベストアンサー
    • MySQL
  • Mysqlに項目を追加するとき順番をかえるには

    こんにちは、 今mysqlを使用しています。 例えば、tbl_EXというテーブルがあり、 そこにはid,name,flgが入っているとしたときに addという項目を追加したい場合は ALTER TABLE tbl_EX ADD add int NULL DEFAULT 0 などとすれば追加できると思うのですが、 その追加を id, name, (add), flg というように 真ん中に入れたい場合は、どうすればいいのでしょうか? 一度テーブルをdropして作り替える以外に方法がある場合、 教えてください。

    • ベストアンサー
    • MySQL
  • BLOB項目追加後のInsert実行エラーとデータサイズ変更方法

    環境はMYSQL 5.0です。 既存のテーブルでたとえば **************************** ○Aテーブル  No INT(5)  Name VARCHAR(5) **************************** 上記のようなテーブルが存在しており、そこに MySQL Query Browserなどのツールを使用し 追加でMEDIUMBLOB型の項目を追加しました。 **************************** ○変更後Aテーブル  No INT(5)  Name VARCHAR(5)  Image MEDIUMBLOB **************************** その後、PG(VB2008)よりjpg画像ファイル登録するため INSERTするとエラーが発生してしまいます。 エラー内容は 「ERROR 1064: You have an error in your SQL syntax. Check the manual that corresp onds to your MySQL server version for the right syntax to use near (ここは文字化け) at line 1」 といった感じです。 INSERT実行自体には問題がないため、 一度MYSQL5.0をアンインストール、再インストール後に初めからBLOB型を含んだAテーブルCREATEを行い 再度同じようにPG実行でINSERTによるjpg画像の登録を行ったら 正常登録されました。 このことよりおそらくMYSQLの既存のデータサイズ設定?に問題が あるのかなぁと思っています。 そこで質問なのですが、MYSQLのアンインストールなど行わずに 既存のままテーブルにBLOB型を追加し、データサイズ(Data Length?)を変更する方法をご存じの方いらっしゃいますでしょうか? また、原因自体違う!というのがありましたらご指摘いただきたいです。 複数の場所でこのBLOB追加作業が必要になってきており、困っております。 よろしくお願いいたします。

  • 一覧の表示で名前をデータ数を表示したいのですが…

    お世話になります。 度々申し訳ないのですが、質問させてください。 現在mysqlに格納したデータの一覧を表示するページを作っているのですが、表示結果が思うようにいかず困っています。 環境:Mysql 5.1.22-rc,PHP  5.2.5 データベース:test01 main -------------------------------------------------------- id name kana 1 太郎 たろう 2 次郎 じろう 3 花子 はなこ -------------------------------------------------------- sub2 -------------------------------------------------------- id a_sakuhin   title 1 data_1   青空   1 data_2   夕日 1 data_3   流星   3 data_1   町並み 3 data_2   列車   -------------------------------------------------------- というテーブルがあります。 それを一覧表示で ・太郎 (3) ・次郎 (0) ・花子 (2) という具合にしたいのですが、どうしても()の中が全件合わせた結果になり ・太郎 (50) ・次郎 (50) ・花子 (50) という様になってしまうのです。 どういったsql文を書けばよいのかアドバイスを頂けると嬉しいです。 よろしくお願いいたします。

  • ビューに追加・削除が出来ません。

    皆さん、はじめまして。 今回業務mysqlでデータベースを作成することになりました。 ビューを用いて二つのテーブルに値の追加・削除・更新をしようと試みたのですが、追加、削除が上手くできませんでした。 mysqlのバージョンは5.0.37です。 今回以下のコマンドを実行しました。 1.<cwork1テーブル作成> create table cwork1 (testname1 varchar(255), testname2 varchar(255), primary key(testname1))TYPE=INNODB; primary key(id)); 2.<cwork2テーブル作成> create table cwork2 (r_name1 varchar(255), yakusyoku varchar(255), foreign key(r_name1) references cwork1(testname1) ON DELETE CASCADE ON UPDATE CASCADE )TYPE=INNODB; 3.<cwork1テーブルに追加> insert into cwork1(testname1,testname2) values('山田','太郎'); 4.<cwork2テーブルに追加> insert into cwork2(r_name1,yakusyoku) values('山田','一般'); 5.<ビュー作成> CREATE VIEW testview AS SELECT * FROM cwork1,cwork2 where cwork1.testname1=cwork2.r_name1; この5つを実行後、 <insert実行> insert into testview(testname1,testname2,yakusyoku) values('斉藤','花子','一般'); ERROR 1395 (HY000):Can not modify more than one base table through a join view 'sampledb.testview' <delete実行> delete from testview where testname1='山田'; ERROR 1395 (HY000): Can not delete from join view 'sampledb.testview' というようにinsert、delete文実行時にエラーが帰ってきてしまいます。 原因がわかるかたがいらっしゃいましたらご教授のほうよろしくお願いします。

    • ベストアンサー
    • MySQL
  • アクセス フォームでの行追加

    大変初歩的なことですが表現が下手なため伝わった方宜しくお願いします 従業員名簿を作成したいと思いテーブルを1つ作りました フォームで入力したものはテーブルに反映されています 人数が少ないので入力用のフォームで 1 ○○花子 S00.00.00  2 ○○太郎 S11.11.11 S00.00.00と一行目の最後まで行ったら 行を追加してそのまま一覧として使いたいのですが 一行目のS00.00.00まで行ってEnterすると 一行目が白くなり段が増えません どなたかこの文章のみで現状をわかって頂けたら教えてください