这样的伪代码的问题在于,不清楚您的数据的确切结构。您说键可以在任一表中,但您不清楚它是否可以在任一表的 3 列中的任何一个中。您也没有指明键或列的数据类型。此外,我建议不要使用这种简化的列名——除非那只是你的伪代码。
话虽如此,假设键可以存在于任一表的任何列中,下面是一个示例,说明如何联合多个 SELECT 语句在两个表的 6 列中的任何一个中查找键。
声明@TableA 表
(
col1a VARCHAR(10)
, col2a VARCHAR(10)
, col3a VARCHAR(10)
)
INSERT INTO @TableA
( col1a
, col2a
, col3a )
VALUES
('key1', 'key2', 'key3')
INSERT INTO @TableA
( col1a
, col2a
, col3a )
VALUES
('key4', 'key5', 'key6')
DECLARE @TableB TABLE
(
col1b VARCHAR(10)
, col2b VARCHAR(10)
, col3b VARCHAR(10)
)
INSERT INTO @TableB
( col1b
, col2b
, col3b )
VALUES
('key7', 'key8', 'key9');
INSERT INTO @TableB
( col1b
, col2b
, col3b )
VALUES
('key10', 'key11', 'key12');
DECLARE @SearchKey VARCHAR(10) = 'key6'
SELECT * FROM @TableA WHERE col1a = @SearchKey
UNION
SELECT * FROM @TableA WHERE col2a = @SearchKey
UNION
SELECT * FROM @TableA WHERE col3a = @SearchKey
UNION
SELECT * FROM @TableB WHERE col1b = @SearchKey
UNION
SELECT * FROM @TableB WHERE col2b = @SearchKey
UNION
SELECT * FROM @TableB WHERE col3b = @SearchKey