我试图了解如何编写可以从同一个表返回相关数据行的 SQL 语句。
举例来说,我有一个名为“购买”的下表:
------------------------------
|ID | Customer | Date | Cost |
------------------------------
1 | 1 | Mon | 20.0
2 | 1 | Tue | 10.0
3 | 1 | Sat | 23.0
4 | 2 | Thu | 211.0
5 | 2 | Mon | 24.0
6 | 2 | Sat | 50.0
7 | 3 | Mon | 34.0
8 | 3 | Sat | 200.0
9 | 3 | Fri | 90.0
我想要每个客户在周六花费的数据以及他们在周一花费的相应数据,以便我获得以下数据:
Saturday: [23.0,50.0,200.0]
Monday: [20.0,24,0,34.0]
我该怎么做?我能做到:
从购买 WHERE Date=='Sat' 中选择成本
和 从购买 WHERE Date=='Mon' 中选择成本
但这似乎不太令人满意,因为它取决于数据库给出结果的顺序,周六和周一可能都没有发生购买。
我为此目的调查了联接和并集,但它们似乎关心来自多个表的数据。
我确信有一个标准方法可以解决这个问题。
最佳答案
您可以将表连接到自身;这将为您提供所需的数据,但格式为
UserID, AmountSpentSat, AmountSpentMon
SQL:
select p1.Customer, p1.cost as AmountMon, p2.cost as AmountSat
from purchases p1, purchases p2
where p1.customer = p2.customer
and p1.date = "Mon"
and p2.date = "Sat"
这是一个有效的 sqlfiddle:http://sqlfiddle.com/#!2/367ef/1
请注意,我添加了一位仅在周六购物的新客户 (4),并且工作正常。
关于mysql - SQL查询来自同一个表的相关数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21029392/