ここから本文です

SQLクエリを教えてください。

seg********さん

2016/1/2211:25:42

SQLクエリを教えてください。

SQLiteを使用しています、以下のような条件でクエリを
発行した場合

クエリ:
select a,b,c from table
where 条件1 or 条件2 or 条件3

各条件にそれぞれ合致したフィールドa,b,cが
取得できると思います。

私がしたいことは
【条件1に合致したフィールドがどれなのか】という
ことです。

例えば上記クエリの結果をエクセルに出力する場合

条件1に合致した場合は青色フォント、2の場合は赤
などとしたいのですが、帰ってくるレコードでどうやって
判別すればよいのでしょうか?

どうぞ、よろしくご教示ください。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
72
回答数:
3
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

chu********さん

リクエストマッチ

2016/1/2303:28:45

標準SQLや主要なRDBMSでも動作するようにしたいなら、他の方の回答にあるCASE式をSELECT句で指定すればいいでしょう。
SQLiteやMySQLであれば、条件式の真を数値の1、偽を0として扱えます。

select
a,b,c
,条件1 AS joken1
,条件2 AS joken2
,条件3 AS joken3
from table
where 条件1 or 条件2 or 条件3

なお、条件式をWHERE句とSELECT句で書きますが、これは性能上、大きく意味が異なります。
WHERE句で書く条件は、いうまでもなくデータ抽出の条件式ですから、性能に直結します。
SELECT句で条件式を書くのは、抽出された行に対してですから、余程冗長なことを膨大な検索結果に行わない限り性能に大きく影響はしません。

質問した人からのコメント

2016/1/25 13:51:19

ご回答ありがとうとざいます。

どちら様をBAにするか迷ったのですが、SQLiteに特化した
回答も頂戴しましたので、こちらの回答をBAに選ばせて
頂きました。

本当に助かりました、ありがとうございました!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

buf********さん

2016/1/2214:59:00

unionとか別々のsql発行しなくてもcase when文だけでできる。

select a,b,c
,case when 条件1 then 1 else 0 end as jyoken1
,case when 条件2 then 1 else 0 end as jyoken2
,case when 条件3 then 1 else 0 end as jyoken3
from table
where 条件1 or 条件2 or 条件3

これで条件に合致したカラムjyokenに1が立つ。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

hdu********さん

2016/1/2211:29:34

SQL以前の問題で、それは、3つの条件別々にSQLを発行するべきです。
取得した結果をその結果の条件で処理を変えるのであれば、先に分けるべきでしょう。

もしくは、UNION句を使って

select 1 as SelectType, a,b,c table where 条件1
union
select 2 as SelectType, a,b,c table where 条件2
union
select 3 as SelectType, a,b,c table where 条件3

とか、する方法も有りますが、押しなべてUNIONは遅いので最終手段ですね。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる