質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3937閲覧

select文で抽出した値を、変数として代入し、SELECT COUNT(*)で数えたい

renren643

総合スコア279

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/07/31 03:58

pythonでmysqlを使っているのですが、select文で抽出した値を、SELECT COUNT(*)で数えたいです。
そのためにselect文で抽出した値を変数としてsql文の中で展開する必要があるとおもうのですが、どのようにしたらいいのでしょうか?
イメージとしては以下のような感じです。
「fugaテーブル(列はid,url,image)にある,imageがnullでurlが存在する行を抜きだし、そのurlを含む行全体の数を数える」という感じです。

urlsはタプルののタプルになっていて、url[0]でurlのみを抜き出すことができます。

conn = MySQLdb.connect(host='host', database='hoge', user='root', password='') c = conn.cursor() #imageがNULLのURLを取得 c.execute('select url from fuga where image is NULL') urls = c.fetchall() for url in urls: print(url[0]) print(c.execute('SELECT COUNT(*) FROM fuga WHERE url = url[0]'))

最後の行の「url = url[0]」はどのように処理したらいいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

こういうSQLを投げるというのは?
SELECT COUNT(*) FROM fuga WHERE url IN (SELECT url FROM fuga WHERE image IS NULL);

投稿2018/07/31 04:04

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

renren643

2018/07/31 04:44

なるほど、そいうう手もありましたか。 なお、 ac.execute("SELECT COUNT(*) FROM huga WHERE url = %s", url)という形でもいけるそうです
guest

0

selectの結果件数なら、使用したカーソルに件数を保持しています。
c.fechall()後に、c.rowcountで取得できるかと。

投稿2018/07/31 04:05

sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問