2

MySQL で 2 つの配列をペアにしようとしています。それらはそのインデックスによってのみ一致する必要があります。a = 1、b = 2、および c = 3 の場合、array(1,2,3) は array(a,b,c) と一致し、1,2,3 を返しますが、(b,a, c) しません。「3」のみを返す必要があります。

私のコード

arraysSQL サーバーに送信するものが 2 つあります。1 つ目は、ids私が回答している質問です。2番目は答えです。

私はこれをしました:

SELECT
  id, title
FROM
  `questions` q
WHERE
  q.id IN (2, 4) AND q.answer IN ('Christoffer Columbus', 'Arnold Schwarzenegger')
;

id... これは、 2 が「Christoffer Columbus」と「Arnold Schwarzenegger」に等しいどうかをチェックします。したがって、質問 1 と 2 の両方で「Christoffer Columbus」と答えると、正解になります。それはあまり良くありません... :-)

これを手伝ってくれませんか?これを解決するにはどうすればよいですか?

4

2 に答える 2

6

私はあなたがこれを探していると思います:

Select
  id, title
From
  `questions` q
Where
  (q.id = 2 And q.answer = 'Christoffer Columbus') Or
  (q.id = 4 And q.answer = 'Arnold Schwarzenegger')
;

配列の各ペアに同様の基準を追加する必要があります。

于 2013-01-18T17:59:37.963 に答える
4

@Laurenceの回答に+1しますが、FWIWでは、次のように、タプル比較を使用して同じ条件を表現することもできます。

Where
  (q.id, q.answer) IN ((2, 'Christoffer Columbus'), (4, 'Arnold Schwarzenegger'))
于 2013-01-18T18:16:37.993 に答える