sql查询如何获得谁知道更多的两个语言

时间:2018-02-28 08:45:41

标签: sql sql-server sql-server-2012

我的表格如下

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

在这里我如何编写查询谁知道更多2 lanuguage

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分: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