0

我有一个表需要删除其他两列匹配的行。例如:

Apples  |  Size   |  Colour  | Juiced
 1      |   big   |   red    |  Yes
 2      |   small |   green  |  No

我希望查询删除所有大小为大、颜色为红色和榨汁的行。

问题是我需要从同一个表中找出大小和颜色(所以不能使用左连接),但我需要在 IN 语句中使用这个表。我正在尝试使用 IN 来选择行,例如:

SELECT * from table WHERE (Juiced <> 'No') OR
(Juiced LIKE 'yes' AND (Size, Colour IN (SELECT Size, Colour FROM table WHERE blah=blah)));

SQL 不允许使用 IN 一次在表中匹配两个变量,那么有什么方法可以让 IN 语句同时识别 Size 和 Color 吗?

我正在使用 SQL Server 2008

任何帮助是极大的赞赏!

4

2 回答 2

1

从概念上讲-当您考虑IN 与多个列时,您会考虑EXISTS

SELECT * 
FROM table T
WHERE (Juiced <> 'No') OR (Juiced LIKE 'yes' AND 
                                            (EXISTS (SELECT Size, Colour 
                                                     FROM [table] A 
                                                     WHERE A.Apples = T.Apples AND
                                                           -- put your 'balhh here...')))
于 2013-10-21T15:45:58.367 回答
0

你可以这样做:

SELECT * FROM table
LEFT JOIN (
    SELECT Size, Colour
    FROM anotherTable
    WHERE condition
) anotherTable ON table.Size = anotherTable.Size AND table.Colour = anotherTable.Colour
WHERE (Juiced <> 'No') -- should this be (Juiced = 'No')?
OR (Juiced LIKE 'yes' AND anotherTable.Size IS NOT NULL);
于 2013-10-21T15:46:15.997 回答