2012-03-13 18 views
0

の3行の値のリストからの値と一致する行を返すようにデータベースにクエリします。これは可能ですか?MySQLの複数の列からANYを選択

私のテーブルには、次の列があります。id、ANS1、ANS2、ANS3

そして、これは、クエリでの私の試みです:

SELECT * 
FROM table 
WHERE 
    ans1 IN ("Yes", "No", "Maybe") OR 
    ans2 IN ("Yes", "No", "Maybe") OR 
    ans3 IN ("Yes", "No", "Maybe"); 

3列は各ヌル、およびIすることができリストの値が("Yes","No","Maybe)である場合は、になります。(またはそれ以上)の列を返すだけです。クエリは正常に実行され(構文エラーなし)、値が存在する行がすべて列にのみ返されます。例えば

:私はすべての3つの行を返すクエリを希望するが、各列は、一致する値を含むように代わりそれだけ1行を返す

INSERT INTO table 
(ans1,ans2,ans3) 
VALUES 
("Yes","No","Maybe"), 
(null,"Yes",null), 
(null,null,"Yes"); 

+0

試したクエリは機能しませんか?そうだとすれば、何が問題なのでしょうか? – VeeArr

+0

問題が1つだけの結果が必要な場合は、そのクエリの最後に1の制限があります;) –

+0

応答ありがとう、しかし私は上記の私の編集ごとにすべての行を探しています。 – Jason

答えて

1

これは正確な答えはありませんが、それはコメントのためにあまりにも長いです。

あなたのクエリは、動作させる方法とまったく同じです。

データのクエリの例を以下に示します。

だから何が問題なのですか?

mysql> create table your_table (
    -> ans1 varchar(10) null, 
    -> ans2 varchar(10) null, 
    -> ans3 varchar(10) null 
    ->); 
Query OK, 0 rows affected (0.13 sec) 

mysql> 
mysql> INSERT INTO your_table (ans1,ans2,ans3) VALUES ('Yes','No','Maybe'),(null,'Yes',null),(null,null,'Yes'); 
Query OK, 3 rows affected (0.01 sec) 
Records: 3 Duplicates: 0 Warnings: 0 

mysql> 
mysql> SELECT * 
    -> FROM your_table 
    -> WHERE 
    -> ans1 IN ('Yes', 'No', 'Maybe') OR 
    -> ans2 IN ('Yes', 'No', 'Maybe') OR 
    -> ans3 IN ('Yes', 'No', 'Maybe'); 
+------+------+-------+ 
| ans1 | ans2 | ans3 | 
+------+------+-------+ 
| Yes | No | Maybe | 
| NULL | Yes | NULL | 
| NULL | NULL | Yes | 
+------+------+-------+ 
3 rows in set (0.00 sec) 
+0

すみません、皆さん。それはまったく正しいものでした。あなたのおかげでアイクとみんなありがとう! **顔の手のひら** – Jason

0

選択肢は「はい」、「いいえ」、「たぶん」、およびNULLである場合、このクエリは動作するはずです:

SELECT * 
FROM table 
WHERE ans1 IS NOT NULL 
    OR ans2 IS NOT NULL 
    OR ans3 IS NOT NULL 
+0

Downvoter、あなたはこのクエリがうまくいかないと言っていますか? – Ami

+0

ありがとうございますが、値の指定ではなく、検索する値を指定する必要があります。 – Jason

+0

4つの値がある場合は、1つの値が存在しないか3つの値が含まれているかをテストする方が簡単です。これは役に立たないことがわかりましたか? – Ami

関連する問題