SQL where子句与数组的数组

时间:2015-09-23 22:55:19

标签: sql-server

我知道WHERE ... IN ...子句允许选择给定数组中存在的字段的所有值。如何将这个想法扩展到一组领域?类似的东西:

SELECT * FROM table_name
WHERE (First, Last) IN ((Adam, Scott), (Betty, Johnson), (Cathy, Wyatt))

或允许相同结果的任何其他方法。

3 个答案:

答案 0 :(得分:2)

问题中的语法在其他一些RDBMS中有效,但在SQL Server中无效。如果在2008年以上,您可以使用

SELECT *
FROM   table_name t
WHERE  EXISTS(SELECT *
              FROM   (VALUES ('Adam', 'Scott'),
                             ('Betty','Johnson'),
                             ('Cathy','Wyatt')
                              ) v(first, last)
              WHERE t.first = v.first AND t.last = f.last 

答案 1 :(得分:1)

这取决于你真正的追求。如果你只想组合2个字段,那么你可以使用这样的东西:

SELECT * FROM table_name
WHERE First+','+Last IN ('Adam, Scott', 'Betty, Johnson', 'Cathy, Wyatt')

答案 2 :(得分:-2)

SELECT * FROM Table_name 第一个IN('Adam','Betty','Cathy') AND Last IN('Scott','Johnson','Wyatt')