程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了sql查询从同一列中获取一行的多个值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决sql查询从同一列中获取一行的多个值?

开发过程中遇到sql查询从同一列中获取一行的多个值的问题如何解决?下面主要结合日常开发的经验,给出你关于sql查询从同一列中获取一行的多个值的解决方法建议,希望对你解决sql查询从同一列中获取一行的多个值有所启发或帮助;

如果要选择email,则@H_329_3@phone在子查询中,这两个联接可能是不必要的:

left join StaffContacTinformation as sci on sr.ID = sci.StaffID
inner join DictStaffContactTypes as dsct on sci.ContactTypEID = dsct.ID

由于它们,您得到的行与特定人的联系人一样多。

最终查询可能类似于:

SELECT sr.Lastname, sr.Firstname, dd.name, 
    Email = (
        SELECT sc.ContactValue FROM StaffContacTinformation as sc
        INNER JOIN StaffRoster as roster on sc.StaffID = roster.ID
        where sc.ContactTypEID = 3 and roster.ID = sr.ID
    ),
    Phone = (
        SELECT sc1.ContactValue FROM StaffContacTinformation as sc1 
        INNER JOIN StaffRoster as roster on sc1.StaffID = roster.ID
        where sc1.ContactTypEID = 1
    ) 
FROM StaffRoster as sr
left join Dictdivisions as dd on sr.divisionID = dd.ID  
where (sr.Active = 1 and sr.isContractor = 0 )
ORDER BY sr.Lastname, sr.Firstname

解决方法

如果每个员工有多个联系方式,我将获得多行,但我只希望每位员工列出他们的姓,名,部门名称,电子邮件和电话。

所以它应该像这样

    First Name    last name    Division     Email                  Phone
       Test          Guy         Exec     test@gmail.com        555-5555

这是我所拥有的,但不起作用:

    SELECT sr.LastName,sr.FirstName,dd.Name,Email = (SELEct sc.ContactValue FROM StaffContacTinformation as sc
         INNER JOIN StaffRoster as roster on sc.StaffID = roster.ID
         where sc.ContactTypEID = 3 and roster.ID = sr.ID),Phone = (SELECT sc1.ContactValue FROM StaffContacTinformation as sc1 
        INNER JOIN StaffRoster as roster on sc1.StaffID = roster.ID
        where sc1.ContactTypEID = 1) 
    FROM StaffRoster as sr
    left join DictDivisions as dd on sr.DivisionID = dd.Id  
    left join StaffContacTinformation as sci on sr.ID = sci.StaffID
    inner join DictStaffContactTypes as dsct on sci.ContactTypEID = dsct.ID 
    where (sr.Active = 1 and sr.isContractor = 0 )
    ORDER BY sr.LastName,sr.FirstName

我用以下查询解决了它:

    SELECT sr.LastName,Phone = (SELECT sc.ContactValue FROM StaffContacTinformation as sc 
        INNER JOIN StaffRoster as roster on sc.StaffID = roster.ID
        where sc.ContactTypEID = 1 and roster.ID = sr.ID) 
    FROM StaffRoster as sr
    left join DictDivisions as dd on sr.DivisionID = dd.Id 
    where (sr.Active = 1 and sr.isContractor = 0 )
    ORDER BY sr.LastName,sr.FirstName

大佬总结

以上是大佬教程为你收集整理的sql查询从同一列中获取一行的多个值全部内容,希望文章能够帮你解决sql查询从同一列中获取一行的多个值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。