【发布时间】:2016-12-23 17:09:24
【问题描述】:
表格:客户
customer_id cust_name city grade salesman_id
----------- ------------ ---------- ---------- -----------
3002 Nick Rimando New York 100 5001
3005 Graham Zusi California 200 5002
3001 Brad Guzan London 5005
3004 Fabian Johns Paris 300 5006
3007 Brad Davis New York 200 5001
3009 Geoff Camero Berlin 100 5003
3008 Julian Green London 300 5002
3003 Jozy Altidor Moncow 200 5007
表格:顺序
ord_no purch_amt ord_date customer_id salesman_id
---------- ---------- ---------- ----------- -----------
70001 150.5 2012-10-05 3005 5002
70009 270.65 2012-09-10 3001 5005
70002 65.26 2012-10-05 3002 5001
70004 110.5 2012-08-17 3009 5003
70007 948.5 2012-09-10 3005 5002
70005 2400.6 2012-07-27 3007 5001
70008 5760 2012-09-10 3002 5001
70010 1983.43 2012-10-10 3004 5006
70003 2480.4 2012-10-10 3009 5003
70012 250.45 2012-06-27 3008 5002
70011 75.29 2012-08-17 3003 5007
70013 3045.6 2012-04-25 3002 5001
我需要一个查询来生成每个当前订单不止一个的客户的姓名和编号。
我的尝试:-
SELECT customer_id, cust_name
FROM customer a
WHERE (SELECT COUNT (*)
FROM orders b
WHERE a.customer_id = b.customer_id) > 1
这给出了所需的输出。但是,是否有任何替代方法可以提供所需的输出并比这更好?另外,我怎么知道哪一个会做得更好?
【问题讨论】:
-
“我怎么知道哪一个会做得更好” - 衡量呢?只有您拥有实际的真实数据,具有特定的索引,并且知道您的性能要求是什么。不要寻找一刀切的经验法则来盲目地适用于所有情况。
标签: sql sql-server database select