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

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

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

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

SQL

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

Q&A

解決済

3回答

26398閲覧

sqlで複数のカラムのデータにいずれかを含んでいる状態

enigumalu

総合スコア192

MySQL

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

SQL

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

0グッド

0クリップ

投稿2017/06/16 04:13

全て0、1で値を持っているのです。使用しているのはmysqlです。
1.test1,test2,test3という複数カラムの中でいずれか一つのカラムの中に1が含まれているものを絞り込みたいのですがそう言った事はできますでしょうか?
2.逆にbook1,book2という2つのカラムのどちらにも0が含まれていない状態を検出したいのですがこれはnot inで可能でしょうか
下記のような記述を考えていました。
where (test1,test2,test3) in ('1')
1は下の1行目3行目がヒットする

test1test2test3
100
000
011

2は2行目だけヒットする

book1book2
10
00
01

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

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

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

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

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

guest

回答3

0

test1~3のすべて0か1で構成されているという条件なら

いずれか一つのカラムの中に1が含まれているもの

where test1+test2+test3=1
でいいかもしれません
最低でも1つ以上が1なら
where test1+test2+test3>0

book1,book2という2つのカラムのどちらにも0が含まれていない

つまりどちらも1なので
where book1+book2=2

投稿2017/06/16 04:48

編集2017/06/16 04:48
yambejp

総合スコア114572

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

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

enigumalu

2017/06/16 09:57

こういった発想はなかったので非常に参考なりました。 ありがとうございます
guest

0

普通にand/orで論理的には実現可能と思いますが...。(他に懸念がある?)
そのまんまSQLに落とせば
1.where test1=1 or test2=1 or test3=1
2.where book1!=0 or book2!=0
※ただ一般的に否定句(!=)やor、in条件は性能が出ない場合があります(項目が少ないのでDBが良きに最適化してくれるかもしれませんが)。
こればチューニングの問題ですが=、and、existsで読み替えるのが定石。
例えば2は値域が0,1であることを利用して
where book1=1 and book2=1
あ、ただ過度の最適化はわかりにくくなったり仕様変更に弱かったりするので注意。

投稿2017/06/16 04:37

編集2017/06/16 05:02
kurokoba

総合スコア276

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

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

0

ベストアンサー

IN演算子は値 IN (候補リスト)なので、WHERE '1' IN (test1,test2,test3)で動きます。

もっとも、素直にWHERE test1 = 1 OR test2 = 1 OR test3 = 1でいい気もします。

投稿2017/06/16 04:16

maisumakun

総合スコア145121

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

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

enigumalu

2017/06/16 08:18

すいませんちなみになんですが1と2の複合条件の場合 WHERE (test1 = 1 OR test2 = 1 OR test3 = 1) and (book1 = 0 and book2 = 0) で1と2の状態を見れますでしょうか?自分でやっていて混乱してきたので
maisumakun

2017/06/16 08:23

はい、それで問題ないはずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問