检查两个数组中的相同索引:IN(1,2,3)AND IN(A,B,C)

时间:2013-01-18 17:54:08

标签: mysql sql

我试图在MySQL中配对两个数组。它们应仅与其索引匹配。意味着如果a = 1,b = 2,并且c = 3,则数组(1,2,3)将匹配数组(a,b,c)并返回1,2,3,而(b,a, c)不会。哪个应该只返回'3'。

我的代码

我有两个arrays我要发送到SQL服务器。第一个是我正在回答的ids个问题。第二个是答案。

我做到了:

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

...这会检查id 2是否等于'Christoffer Columbus' AND 'Arnold Schwarzenegger'。因此,如果您在问题1和问题2中回答'Christoffer Columbus',那将是正确的。那不太好......: - )

你可以帮我这个吗?我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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')
;

您需要为数组中的每对添加类似的条件。

答案 1 :(得分:4)

+1 @ Laurence的回答,但是你还可以使用元组比较来表达相同的条件,如下所示:

Where
  (q.id, q.answer) IN ((2, 'Christoffer Columbus'), (4, 'Arnold Schwarzenegger'))