我有一个表需要删除其他两列匹配的行。 例如:
Apples | Size | Colour | Juiced
1 | big | red | Yes
2 | small | green | No
我希望查询删除所有大小都很大的行,并且颜色为红色和juiced。
问题是我需要从同一个表中找出大小和颜色(因此不能使用左连接)但我要求在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
非常感谢任何帮助!
答案 0 :(得分:1)
从概念上讲 - 当您考虑 IN with multiple columns 时,您对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...')))
答案 1 :(得分: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);