我正在尝试使用IN
来查询多个列。如果我使用“=”,我会返回行(参见示例),但我想查询多个。
需要查询表返回行A12345和B98765但不返回C00000
column1 | column2
A 12345
B 98765
C 00000
这有效
SELECT *
FROM TABLE
WHERE (column1,column2) = ('A',12345)
这不起作用。
SELECT *
FROM TABLE
WHERE (column1,column2) IN (('A',12345),('B',98765))
这是错误:
Error: SQL0104N An unexpected token "," was found following ",". Expected tokens may include: "AT MICROSECONDS MICROSECOND SECONDS SECOND MINUTES MINUTE HOURS". SQLSTATE=42601
(State:42601, Native Code: FFFFFF98)
我已尝试过括号,逗号等的几种变体,但却无法使其发挥作用。是否可以执行此操作,如果可以,则可以提供语法。
感谢
答案 0 :(得分:0)
根据您的数据,这可能是可行的:
scan.nextLine()
答案 1 :(得分:0)
事实证明这很简单,应该知道这一点。
SELECT * FROM TABLE 在哪里CONCAT(column1,column2)IN('A12345','B98765')
答案 2 :(得分:-1)
DB2 9.7起:
SELECT *
FROM TABLE
WHERE (column1, column2) IN (VALUES ('A', 12345), ('B', 98765))
一种解决方案是使用临时表:
create table #tmp
(
col1 varchar(2),
col2 int
);
insert into #tmp (col1, col2)
values ('A', 12345), ('B', 98765)
SELECT t.* FROM TABLE t
JOIN #tmp ON #tmp.col1 = t.column1 and #tmp.col2 = t.column2
您尚未说明您的RDBMS,但您尝试过:
SELECT * FROM TABLE
WHERE (column1, column2) IN ('A', 12345)
OR (column1, column2) IN ('B', 98765)