从 table join 获取唯一数据对
Get unique data pair from table join
我正在尝试在 SQL 中制作一个匹配程序,它输出以下数据
- 共享街道
- 共享宠物
- 第 1 个人最喜欢的食物
- 第 2 个人最喜欢的食物
人民 table 有一个独特的时间戳列
我写了
Create Table match As
Select a.street, a.pet, a.food, b.food
From People a, People b
Where a.street = b.street And a.pet = b.pet And a.time <> b.time
Order by a.time;
示例table
Street
Pet
Food
Time
maple
dog
pizza
2021/07/28 12:55:56 PM MDT
maple
cat
pizza
2021/07/28 3:34:56 PM MDT
maple
dog
french fries
2021/07/28 12:34:56 PM MDT
abney
dog
pizza
2021/07/28 5:34:56 PM MDT
abney
cat
pizza
2021/07/28 12:45:56 PM MDT
abney
dog
french fries
2021/07/28 2:34:56 PM MDT
例如它输出这个
maple|dog|pizza|french fries
maple|dog|french fries|pizza (duplicate)
abney|dog|pizza|french fries
abney|dog|french fries|pizza (duplicate)
我怎样才能让它不 return 重复值?
编辑:我可能不想使用“Distinct”,因为有很多不重复的值可以被标记为重复(因为它的输出相同但来自不同的人)
而不是运算符 <>
使用 >
(或 <
)来比较 time
。
还可以使用带有 ON
子句的正确连接:
SELECT p1.street, p1.pet, p1.food, p2.food
FROM People p1 INNER JOIN People p2
ON p2.street = p1.street AND p2.pet = p1.pet AND p2.time > p1.time
ORDER BY p1.time;
参见demo。
我正在尝试在 SQL 中制作一个匹配程序,它输出以下数据
- 共享街道
- 共享宠物
- 第 1 个人最喜欢的食物
- 第 2 个人最喜欢的食物
人民 table 有一个独特的时间戳列
我写了
Create Table match As
Select a.street, a.pet, a.food, b.food
From People a, People b
Where a.street = b.street And a.pet = b.pet And a.time <> b.time
Order by a.time;
示例table
Street | Pet | Food | Time |
---|---|---|---|
maple | dog | pizza | 2021/07/28 12:55:56 PM MDT |
maple | cat | pizza | 2021/07/28 3:34:56 PM MDT |
maple | dog | french fries | 2021/07/28 12:34:56 PM MDT |
abney | dog | pizza | 2021/07/28 5:34:56 PM MDT |
abney | cat | pizza | 2021/07/28 12:45:56 PM MDT |
abney | dog | french fries | 2021/07/28 2:34:56 PM MDT |
例如它输出这个
maple|dog|pizza|french fries
maple|dog|french fries|pizza (duplicate)
abney|dog|pizza|french fries
abney|dog|french fries|pizza (duplicate)
我怎样才能让它不 return 重复值?
编辑:我可能不想使用“Distinct”,因为有很多不重复的值可以被标记为重复(因为它的输出相同但来自不同的人)
而不是运算符 <>
使用 >
(或 <
)来比较 time
。
还可以使用带有 ON
子句的正确连接:
SELECT p1.street, p1.pet, p1.food, p2.food
FROM People p1 INNER JOIN People p2
ON p2.street = p1.street AND p2.pet = p1.pet AND p2.time > p1.time
ORDER BY p1.time;
参见demo。