SQL Server查询以检查是否已有人出售特定物品?

时间:2020-01-27 06:01:21

标签: sql sql-server

我有一个思考查询的问题,该问题将按照以下步骤进行:显示每个售出的人,例如8888777766663333,{{ 1}}。

我只需要查看结果的人的ID,姓名和姓氏(如果他们出售了这些特定部分)。这是通过在查询中使用/来完成的吗?

谢谢您的帮助。

3 个答案:

答案 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