我有这个问题:
SELECT *
FROM Table.Diet
WHERE Diet.Date NOT IN (
SELECT Diet.Date
FROM Table.Diet
WHERE Diet.FruitsEatenToady = 'Banana'
Group BY Diet.Date)
许多水果可以在一天内食用。
但是查询回来了几天吃了香蕉。
我是db2的新手还有另外一种我可以用来不用的语法吗?也许是一些分组?
由于
编辑饮食表格布局
DATE-----FruitsEatenToday--Calories
3/11/2014|Apple | 116
3/11/2014|Banana | 106
编辑2完全屠杀第一个查询更新了它
答案 0 :(得分:1)
我认为你想要没有吃香蕉的日子。现在编写查询时,以下内容似乎有效:
select *
from table.diet
where not exists (select 1
from table.diet
where Diet.FruitsEatenToady = 'Banana'
);
今天吃香蕉时,这将返回table.diet
中的所有行。如果没有吃香蕉,它将不返回任何行。
这似乎是一个非常奇怪的数据结构。我希望看到一个有日期列和水果列的表,指定吃水果的日期。
答案 1 :(得分:1)
根据您的表结构和查询要求,您看起来需要一个反连接:
SELECT d1.*
FROM Table.Diet AS d1
LEFT JOIN Table.Diet AS d2
ON d1.Date = d2.Date
AND d1.FruitsEatenToday <> d2.FruitsEatenToday
AND d2.FruitsEatenToday = 'Banana'
WHERE d2.FruitsEatenToday IS NULL