sql查询如何获取谁知道两种以上的语言

问题描述 投票:-6回答:3

我的桌子看起来像

Id Name Gener    Lan1      Lan2    lan3
------------------------------------------
1  xyz   M       Null      c       c#
2  lmn   M       c#        java    jquery

在这里我怎么能写出知道超过2种语言的查询

sql sql-server sql-server-2012
3个回答
0
投票

我希望这能帮到您。

SELECT * FROM (SELECT ID,NAME,GENRE,COUNT(LAN1)+COUNT(LAN2)+COUNT(LAN3) AS 
KNOWN_LANG FROM YOUR_TABLE GROUP BY NAME) WHERE KNOWN_LANG >=2

0
投票

首先,你的数据库设计非常糟糕,如果可能的话就改变它,否则你可以使用apply操作符来获得不仅仅是语言的用户。

SELECT a.id 
FROM table t
CROSS APPLY (
    VALUES (id, Name, Lan1),
           (id, Name, Lan2),
           (id, Name, Lan3)
)a(id, name, lans)
GROUP BY a.id
HAVING COUNT(a.lans) > 1

如果一个用户在(Lan1,Lan2,Lan3,..)中输入相同的语言,请使用DISTINCT


0
投票

在您的情况下,如果该人不知道该语言,则在相应列中有null。所以,如果你想得到知道三种语言的人,就足以检查所有列是否都是not null

select id, name, gender, lan1, lan2, lan3 from MY_TABLE
where [lan1] is not null and [lan2] is not null and [lan3] is not null
© www.soinside.com 2019 - 2024. All rights reserved.