2017-02-22 3 views
-1

複数のSELECT結果を1つのステートメントに結合したいと考えています。SQLite + Python:SELECTとUNIONのパラメータの使い方

私はSOを検索しましたが、答えは見つかりませんでした。しかし、私は同様のものを見つけました:sqlite combine select all from multiple columns

上記の質問と私の違いは、私は文にパラメータがあることです。

ハイアーは

cur.execute(''' 
SELECT * FROM Table1 WHERE ColA = ? 
UNION 
SELECT * FROM Table1 WHERE ColB = ? 
UNION 
SELECT * FROM Table1 WHERE ColC = ? 
(ValueA, ValueB, ValueC,)''') 

ValueA、VALUEB、ValueCはパラメータです...私のコードです。

しかし、それはうまくいきませんでした。コードをどのように変更できますか?ありがとう!

私は多分これはあなたを助けることができると思い
+1

ちょうど私自身をあかすために好奇心、 'WHERE ColA = ValueA OR ColB = ValueB OR ColC = ValueC'のように、これらのすべてを1つのクエリで選択したくない理由は何ですか? 'UNION'は重複した行を与えることができますが、おそらくこれは私が求めている質問に対する答えです。 – Santi

+0

@サンティご意見ありがとうございます。私があなたが書いているようにすると、結果は異なってくるでしょう。また、UNION ALLコマンドは重複行を与えていると思います。 – doglas

+0

パラメータは、ホスト言語からSQLにアクセスする場合にのみ使用されます。そのコードを表示します。 –

答えて

2

クエリパラメータは、クエリ文字列に属していないが、executeの2番目のパラメータである必要があります。

cur.execute(''' 
    SELECT * FROM Table1 WHERE ColA = ? 
    UNION 
    SELECT * FROM Table1 WHERE ColB = ? 
    UNION 
    SELECT * FROM Table1 WHERE ColC = ?''', 
    (ValueA, ValueB, ValueC)) 
+0

ありがとうございました!できます。 – doglas

0

cur.execute('SELECT * FROM Table1 WHERE colc =(?,?,?)', valueA,ValueB,ValueC)

関連する問題