我有一个思考查询的问题,该问题将按照以下步骤进行:显示每个售出的人,例如8888
,7777
,6666
,3333
,{{ 1}}。
我只需要查看结果的人的ID,姓名和姓氏(如果他们出售了这些特定部分)。这是通过在查询中使用/来完成的吗?
谢谢您的帮助。
答案 0 :(得分:0)
下面的示例查询应该有帮助。
假设Person
表存储个人记录,而Sales
表存储销售记录。
下面的查询将获取出售了指定的part_ids
中的任何的人。
select distinct p.id, p.first_name, p.last_name
from person p
inner join sales s on s.sales_person_id = p.id
where s.part_id in (8888, 7777, 6666, 3333, 1111)
答案 1 :(得分:0)
使用subquery
而不是inner join
来提高性能,我更喜欢以下代码:
SELECT p.id, p.name, p.surename FROM Person AS p
WHERE EXIST(
SELECT s.id FROM Sales AS s WHERE p.id=s.personID AND
Parts IN(8888, 7777, 6666, 3333, 1111)
)
答案 2 :(得分:0)
尝试一下,
declare table @sales(part_id int)
insert into @sales values (8888), (7777), (6666), (3333), (1111)
declare @cnt int
select @cnt=count(*) from @sales
;With CTE as(
select sales_person_id,count(*)
from sales s
inner join @sales ss on s.part_id=ss.part_id
--where s.part_id in (8888, 7777, 6666, 3333, 1111)
group by sales_person_id
having count(*)>@cnt
)
select p.id, p.first_name, p.last_name
from person p
inner join CTE s on s.sales_person_id = p.id