『MySQL』に関する質問・疑問一覧

次へ  ]
100件中 1~20件目
  • count関数の値をwhere句で使用する方法につ...

    宜しくお願い致します。 例えば、下記の様にデータを検索します。 select column1,count(column2) as column2_num from hoge_table group by column2_num すると、検索結果にはcolumn1のそのままの値と、column2の合計数が表示されると思います。 このcolumn2の合計数に対してwhere句で絞込みを行う方法はありませんか? asで定義した値をそのままwhere句で使用できないとの事なので、 select column1,count(column2) as column2_num from hoge_table where count(column2) = '1' group by column2_num とやってみたんですが、検索出来ませんでした。 ご存知の方、ご教授の程、宜しくお願いいたします。

    • ベストアンサー
    • すぐに回答を!
    • nikuq
    • MySQL
    • 回答1
    2006/10/23 17:25
  • 一部のカラムでdistinctし全てのカラムを取得

    環境はmysql5.2です。 例えば以下のようなテーブルがある時 pref   city  town ---------------- 東京  港区  A町 東京  南区  C町 大阪  北区  D町 大阪  北区  E町 愛知  南区  F町 愛知  南区  G町 prefのみが重複しないように、全てのカラムを取得しようと思っているのですが、 select distinct pref, city, town … とすると当然全て取得されます また、 select disitinct pref … とするとたしかにprefは重複せずにすむのですが、cityとtownを取得することが出来ません。 どのようにすればprefだけは重複させずに全てのカラムを取得することが出来るのでしょうか。 ご存じの方がいらっしゃればご教授お願いします。

    2011/07/02 16:10
  • 結合で重複のエラーが出る

    mysql5.1.33を使用しています。 次のような構成で、 テーブル「tbl1s」 id int(11) テーブル「tbl2s」 id int(11) テーブル「tbl1s_tbl2s」 id int(11) tbl1_id int(11) tbl1sの外部キー tbl2_id int(11) tbl2sの外部キー テーブル「tbl2sbelongs」 id int(11) tbl2_id int(11) tbl2sの外部キー count int(11) テーブル「tbl1s」 +------+ |  id  | +------+ |  1  | +------+ |  2  | +------+ |  3  | +------+ テーブル「tbl2s」 +------+ |  id  | +------+ |  1  | +------+ |  2  | +------+ |  3  | +------+ テーブル「tbl1s_tbl2s」 +------+-------+-------+ |  id  | tbl1_id | tbl2_id | +------+-------+-------+ |  1  | 1    | 1   | +------+-------+------+ |  2  | 1    | 2   | +------+-------+------+ |  3  | 3    | 3   | +------+-------+------+ テーブル「tbl2sbelongs」 +------+-------+-------+ |  id  | tbl2_id | count | +------+-------+-------+ |  1  | 1    | 3   | +------+-------+------+ |  2  | 2    | 10  | +------+-------+------+ |  3  | 3    | 15  | +------+-------+------+ SELECT * FROM `tbl1s_tbl2s` AS `Tbl1sTbl2` INNER JOIN (SELECT *, sum(Tbl2sbelong.`count`) as sum FROM `tbl2s` AS `Tbl2` INNER JOIN `tbl2sbelongs` AS `Tbl2sbelong` ON (`Tbl2`.`id`=`Tbl2sbelong`.`tbl2_id`) WHERE 1 = 1 GROUP BY `Tbl2`.`id` ) AS `SUB` ON (`Tbl1sTbl2`.`tbl2_id`=`SUB`.`id`) WHERE 1 = 1 GROUP BY `tbl1_id` を実行すると、 「SQL Error: 1060: Duplicate column name 'id' 」 というエラーが出てしまいます・・・ おそらくカラムのidが結合の中で重複しているという内容だと思うのですが、 3つもテーブルが絡んでくるとどれのidがというのが分からないのですが、 これは何が原因なのでしょうか? ちなみにサブクエリの SELECT *, sum(Tbl2sbelong.`count`) as sum FROM `tbl2s` AS `Tbl2` INNER JOIN `tbl2sbelongs` AS `Tbl2sbelong` ON (`Tbl2`.`id`=`Tbl2sbelong`.`tbl2_id`) WHERE 1 = 1 GROUP BY `Tbl2`.`id` この段階までは実行できます。 最終的には、「tbl2sbelongs」テーブルの「count」の値によって、「tbl1s」を降順に並べ替えたいと思っています。 この例だと テーブル「tbl1s」 +------+ |  id  | +------+ |  3  |count = tbl2_id「3」の15 = 15 +------+ |  1  |count = tbl2_id「1」の3 + tbl2_id「2」の10 = 13 +------+ |  2  |count = 0 +------+

    2009/12/11 01:03
  • csvファイルを使ってMySQLのテーブルを更新し

    約2万件ある15個のカラムで構成されるMySQLのテーブルがあります。 このテーブルをcsvファイルを使って更新しようと考えています。 csvファイルにはレコードIDとあるカラムの変更する値の2つのセルで 構成されています。 行数は毎回異なりますが、だいたい300行前後です。 csvファイルの具体的イメージはこんな感じです。 id order ============ 2, 200 4, 10 7, 460 11, 35 MySQLのテーブルの方にも「id」と「order」というカラムが存在します。 java や PHP を使ってやる方法はわかるんですが、プログラムを作成しないで SQLだけで行いたいと考えています。 LOAD DATA LOCAL INFILE などがあることがわかったのですが、レコードを REPLACE  するのではなく、一部のカラムをアップデートしたい、ということです。 どなたか、教えて頂けると助かります。 よろしくお願い致します。

    2015/12/27 14:22
  • GROUP BYで集約されるときのソートを変えたい

    GROUP BYで集約されるときのソートを変えたい MySQLの5.1を使用しています。 テーブル"tbl"には、"no","id","score"の3つのフィールドがあり、 "no"は主キーです。 +---+----+-------+ | no | id | score | +---+----+-------+ | 1 | 10 | 10002 | | 2 | 10 | 10000 | | 3 | 10 | 10008 | | 4 | 11 | 10004 | | 5 | 12 | 10006 | +---+----+-------+ 上記の表から、 scoreの値が高い順にグループ化してソートしたいのですが、 以下のSQL文ではscoreが最初に登録されたものに集約されてからグループ化されてソートしてしまうため、 思い通りの結果が得られずに困っています。 ↓具体例 SELECT no, id, score FROM tbl ORDER BY score DESC GROUP BY id; +---+----+-------+ | no | id | score | +---+----+-------+ | 5 | 12 | 10006 | | 4 | 11 | 10004 | | 1 | 10 | 10002 | +---+----+-------+ ↓欲しいソート順 +---+----+-------+ | no | id | score | +---+----+-------+ | 3 | 10 | 10008 | | 5 | 12 | 10006 | | 4 | 11 | 10004 | +---+----+-------+ テンポラリテーブルはなるべく使用せずソートしたいのですが、 このような事は可能なのでしょうか? ご存知の方がいらっしゃいましたら教えていただけると助かります。 よろしくお願いします。

    2010/10/19 18:24
  • WHERE句の?

    お世話になります よろしくお願いします。 さっそくで申し訳ないのですが SQL分で SELECT test01 FROM test WHERE test01 = ? の「?」というのはどういう意味があるのでしょうか? 以上よろしくお願いします。

    2008/02/20 12:13
  • データベースのINT型項目にNULLはNG?

    以前、知り合いからデータベースのINT型の項目には出来ればNULLを許可しない(NOT NULL)方がいいと聞いたことがあるのですが、本当でしょうか? 現在不動産の物件データを登録するためのシステムを作成しており、 データベースの設計を行なっている最中なのですが、 例えば金額や面積など数字しか入力されない項目はINT型にしたいと考えています。 ※データベースはMySQLになります。 ただし、 物件データ登録時に数字項目に何も入力されなければ「NULL」、 0以上の数値を入力されている場合にはそのままその数値をデータベースに登録したいと考えています。 ※0を入力されている場合には「0」をそのまま入れたいです。 INT型の項目にはNULLを入れるのを避けた方がいい場合には、0を入れるような仕様に変更しようと考えているのですが、その辺のことについて教えて頂けると助かります。 ざっくりとした質問で申し訳ございませんが、宜しくお願い致します。

    2013/01/21 11:31
  • mysqlのデータディレクトリの変更

    debian8を再インストールし、データベースをインポートしました。 Mysqlのディレクトリが/var/mysqlになっているらしく、/var/mysqlniにインポートされています。そのDBを利用しているwordpressは正常にデータが表示されます。 しかし/varのパーティショサイズは、多く確保できないので、DBが/varを圧迫してしまうので。mysqlのDBを容量に余裕がある/home/mysql_data配下に設定変更したいのです。ネットで調べると/etc/my.cnfと言うファイルに [mysqld] # datadir=/var/lib/mysql datadir=/home/mysql_data # socket=/var/lib/mysql/mysql.sock socket=/home/mysql_data/mysql.sock 変更を加えることで実現できるという記事があるが、,my.cnfというファイルは /var/lib/dpkg/alternatives/my.cnf /etc/mysql/my.cnf /etc/alternatives/my.cnf に存在するが、datadirの記述されている部分は無い。 /etc/mysql/mariadb.conf.d/50-server.cnf に user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking ・ ・ ・ また /home 配下に「datadir」を設置する場合。 To run MariaDB SQL from /home, in the file /usr/lib/systemd/system/mariadb.service, just change : $ sudo vi /usr/lib/systemd/system/mariadb.service ProtectHome=true to : ProtectHome=false とする記述に変更し datadirに/home/mysql_dataと変更して systemctl start mariadb.serviceをしても、mysqlの起動がエラーになってしまう。 debian8でmysqlのデータディレクトリを変更する方法を教えてください。

    2018/04/21 17:40
  • A5:SQL Mk-2でテーブルは作れないのか?

    xamppとA5:SQL Mk-2ソフトを組み合わせてます。 phpmyadminでデータベースとテーブルを作ってMk-2でsql文 例としてselecto * from aaa;などは動きます。 しかしMk-2で CREATE TABLE shiire(scode CHAR(4),kosuu INT,sdate CHAR(7)); INSERT INTO shiire VALUES ('A002',35,'2003-04'); INSERT INTO shiire VALUES ('B002',24,'2003-05'); は作れません。phpmyadminのクエリでは作れます。 ご教授ください。

    2012/03/16 05:08
  • 【MySQL】1対1でテーブルをあえて分ける

    mysqlを使用してデータベースを作成しているのですが データベースでテーブルを分けるときって 【アカウントテーブル】 ID アカウント 名 アカウント パスワード 名前 住所 電話番号 職業 【職業テーブル】 職業ID 職業名 というような1対多というのはよく組むとおもうんですが 下記のような 【アカウント情報テーブル(アカウント情報)】 アカウントID アカウント 名 アカウント パスワード 【アカウント情報テーブル(プロフィール情報)】 アカウントID 名前 住所 電話番号 職業 1対1の関係でテーブルをジャンル(エンティティ)ごとに複数にわけて あとでリレーションして一個にまとめるというのはデータベース的にあまりよろしくないのでしょうか? 何故、こんなことしたいかというと、1テーブルあたりのカラム数がかなり多くなってくると PHPでデータベースを書き込んだり呼び出したりする時に毎度多くのカラムを取り扱わなければならず SELECTで、カラムを一個一個選んで行かないといけません。 しかし、取り扱いたいカラムは大抵の場合あるジャンルだけなので リレーションするかしないかで、あるジャンルのデータだけを取り扱えれば 効率がよくなるのでは? というのがあります。 また、視覚的にカラムの把握もしやすくなります。 この1対1テーブルは、DB設計的にどうなでしょうか?

    2012/05/16 12:12
  • 論理名とコメント構文(?)について

    ・論理名とコメント構文が分からないので、教えてください ■論理名 ・論理名は、内容を分かりやすくするために付ける日本語表記、と思っているのですが、そういう認識で合っているでしょうか? ・論理名は、どこに付けるのでしょうか? テーブル定義書などの設計書にだけ表記するのでしょうか? それとも、SQLの中で「論理名」を付ける場所は決まっているのでしょうか? ・MySQLのコメント内に、「論理名」を記述しても良いのでしょうか? ・「論理名」を付与する場合、一般的に、どこに記述するのか? SQLの中でも記述するのか? について、教えてください ■コメント ・「コメント構文」と、「COMMENT オプション」では、何が違うのでしょうか? ・SQLステートメントの構文解析とは、具体的に何を指すのでしょうか? ・両者の使い分け(どういう時にどちらを用いるのか等)について、教えてください ▽MySQL :: MySQL 5.1 リファレンスマニュアル :: 8.5 コメント構文   http://dev.mysql.com/doc/refman/5.1/ja/comments.html >記述されたコメント構文はmysqldサーバによるSQLステートメントの構文解析に適用 ▽MySQL :: MySQL 5.1 リファレンスマニュアル :: 12.1.8 CREATE TABLE 構文   http://dev.mysql.com/doc/refman/5.1/ja/create-table.html >カラムのコメントは、255文字の長さまでで COMMENT オプションで指定できます。コメントは SHOW CREATE TABLE と SHOW FULL COLUMNS ステートメントによって表示

    • ベストアンサー
    • 暇なときにでも
    • re999
    • MySQL
    • 回答1
    2012/07/15 09:24
  • ’・ソ’?

    バッチファイルを起動させると、最初に次のメッセージが出ます。 ’・ソ’は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。 1行目に何を書いても、・ソの後にそれが続くだけで、このメッセージは出てしまいます。 たとえば、@echo off と書くと、 ’・ソ@echo’は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。 どうしたら出なくなるのですか?

    • ベストアンサー
    • すぐに回答を!
    • tohiyu
    • MySQL
    • 回答1
    2011/07/29 11:04
  • MYSQLで全てのカラムから検索する。

    tbというテーブルのbangというカラムに4が含まれていれば表示というのは select * from tb where (bang) like '%4%' ; という形になりますが、このtbテーブルにさらにname,tukiというカラムがあったとして カラムに関係なくレコードのどこかに4が入っていれば抽出するというSQL文が書きたいです。 select * from tb where bang like '%4%' or name like '%4%' or tuki like '%4%' ; と書くことで何とか今まではやってきたのですが、カラム数が増えてきてしまったので、ものすごく長いSQL文なってしまいました。 もう少しスマートにする方法はありませんか?

    2013/06/08 14:53
  • 副問合せを使わずにUNIONと同様の処理ができるよ...

    http://okwave.jp/qa4191021.html こちらで質問させていただきましたが、新しく解決できない問題ができたので、再度別の質問を立てさせていただきます。 現在、以下のUNIONを入れ子になったSELECT文があります。 ----------------------------------------------------- SELECT sum( p ) , count( * ) +1 AS jyuni FROM ( SELECT ad_kahi AS kahi, ad_mid AS mid, ad_r AS r, ad_p AS p FROM ad_log UNION ALL SELECT g_kahi AS kahi, g_mid AS mid, g_r AS r, g_p AS p FROM game_log UNION ALL SELECT b_kahi AS kahi, b_mid AS mid, b_r AS r, b_p AS p FROM bazz_log ) WHERE kahi = '0' GROUP BY mid HAVING sum( p ) > 0 ------------------------------------------------ しかし、MySQLのバージョンの問題(MySQL 4.0.26)で、サブクエリを使うことができません。 そこで、同じ処理を副問合せを使わない形でできるようにする方法をご存知の方、いらっしゃいましたらご教示頂ければ幸いでございます。 ちなみに、一時テーブルを作る方法は考えました。 しかし、このスクリプトはWEBアプリの一部で実行・更新頻度が多く、多いときは1回につき数万行を処理することになるという事情がありまして、できるだけ軽く処理ができる方法が他にあればと考えております。 何卒よろしくお願い申し上げます。

    2008/07/21 18:01
  • mysqlでJOIN文

    関係有りそうな部分だけ抜粋します。 mysqlで外部キーを設定して、 下記のようなSQLを実行してみましたが、 #1066 - Not unique table/alias: 'tie_up'と エラーメッセージが表示されました。 何がおかしいのでしょうか? 外部キーは「song」テーブルの「tie_up_1_ID」、同「song」テーブルの「tie_up_2_ID」、 それと「tie_up」テーブルの「tie_up」です。 SQLを触るの5年振りなんで・・・。 SELECT * FROM ((((( song left JOIN kashu ON song.kashu_ID = kashu.kashu_ID) left JOIN sakushi ON song.sakushi_ID = sakushi.sakushi_ID) left JOIN sakkyoku ON song.sakkyoku_ID = sakkyoku.sakkyoku_ID) left JOIN hennkyoku ON song.hennkyoku_ID = hennkyoku.hennkyoku_ID) left JOIN tie_up ON song.tie_up_1_ID = tie_up.tie_up_ID) left JOIN tie_up ON song.tie_up_2_ID = tie_up.tie_up_ID;

    2013/06/19 20:55
  • MYSQLの差集合について

    MYSQLの差集合について MYSQLの差集合についてお教えください。OracleにはMinus、Postgres等はexceptがあります。MYSQLで同等の関数がないか調べましたが、無いのか検索がヘタなのかヒットしません。下記のようにSQLを書けばexceptと同じ効果があるのはわかりますが、exceptみたいにかけたら簡単かなと思います。そのような関数がありましたら、お教えください。よろしくお願い致します。 mysql> SELECT table1.* FROM table1 -> LEFT JOIN table2 ON table1.id=table2.id -> WHERE table2.id IS NULL;

    2011/05/20 16:06
  • int型フィールドにnullを登録できない・・・

    > insert into tbl_tst values (001,'',21000,,22,4400,'3~4日','∞') とすると syntax error になってしまいます。 > insert into tbl_tst values (001,'',21000,'',22,4400,'3~4日','∞') とすると out of range になってしまいます。 > insert into tbl_tst values (001,'',21000,0,22,4400,'3~4日','∞') は通常に登録できます。 > insert into tbl_tst values (001,'',21000,'0',22,4400,'3~4日','∞') も通常に登録できます。 4カラム目のフィールドなのですが、show fields で見ても int(11) Null→YES  Default→NULLとなっております。 NULLを登録(何も値を入れない)したいのですが、 どうすればよいでしょうか。 ご存知の方いらっしゃいましたらご教示願います。 宜しくお願い致します。

    2006/11/19 22:43
  • 同じSQL文で極端に検索が遅くなる時がある

    [環境] OS:CentOS    ⇒メモリ:4G    ⇒CPU:2コア(種類はわかりませんでした) DB:MySQL5.1.52 クライアント:Flex サーバー:php, Apache お世話になっております。 とあるSQL文を実行すると、1秒で結果が返ってくる時と、 20秒近く結果が返ってこない時があり、 原因が何なのか分からず質問させていただきました。 =以下詳細= 40万件と30万件レコードが存在する2つのテーブルを結合し、 結果を表示しているプログラムがあります。 この実行結果で、1秒で結果が返ってくる時と、 20秒近く結果が返ってこない時があります。  ※全く同じ条件で検索しています。  ※急にデータ量が増えたのではありません。 20秒近く結果が返ってこなくなる時間はだいたい30分くらいです。 30分過ぎると、1秒で結果が返ってくるようになります。 20秒近く結果が返ってこない時間帯になると、 他のプログラムのSQL文にタイムアウトが発生します。 基本的には1秒で結果が返ってきていますので、INDEXは正しく設定されていると思います。 同じ条件のSQL文で処理時間が違う原因として、考えられることはございますでしょうか? どなたかお分かりになる方いらっしゃいましたら、 ご教示いただければと思います。 よろしくお願い致します。

    2011/08/01 14:17
  • ID番号に対するデータタイプは?

    MySQL初心者です。 ぐぐって見たのですが、良く分からなかったので質問します。 フィールドが最大5桁の数字で構成された社員IDナンバーの場合、データ型は int(5)、varchar(5)、char(5)、numeric(5) のどれになるのでしょうか?numericで試したところ、テーブルを作成すると社員IDのデータ型がdecimal(5,0)になったので、おそらくそれは無いと思うのですが。 回答、お願いします。

    2012/07/01 20:48
  • Query OK, 0 rows affected

    Query OK, 0 rows affected (0.00 sec) が、MySQLに与える影響について、教えてください。 この場合、「0 rows affected」て書いてあるので、 MySQLに与える影響はない、と考えてよいのでしょうか? それとも、何らかの場合(例えばrows以外)では、 コマンドによっては、 この表示が出ても、 MySQLの設定とかが変更されることはあるのでしょうか? 知りたいのは、 この表示が出てきたとき、 打ったコマンドが 「100%失敗だった」か、あるいは、「必ずしもそうとは限らない」、かについてです。

    • ベストアンサー
    • 暇なときにでも
    • re999
    • MySQL
    • 回答1
    2011/07/30 12:43