获取在最大匹配条件下排序的行

时间:2016-03-16 18:09:46

标签: mysql

我有两张桌子:

表1:

Field    Type    KEY
ID       int     PRI
Name     varchar 
SubID    varchar PRI

表2:

Field    Type    KEY
ID       int     PRI/ForignKey
SubName  varchar  

所以我想根据最大匹配子名Table1排序的subName来获取。

e.g。

ID    Name   SubID 
1     Shan   1
1     Shan   2
2     ABC    1

ID    subName
1     SST
2     Chemistry
3     Physics

所以我想获取条件类似于具有subName SST或Chemistry的最大匹配记录的记录。 在我们的例子中,它应该返回:

Shan
Abc

由于shan匹配两个条件,因此它位于顶部。 请提供mysql查询。

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT t1.Name
FROM Table1 AS t1
INNER JOIN Table2 AS t2 ON t1.SubID = t2.ID
GROUP BY t1.Name 
HAVING COUNT(CASE WHEN subName IN ('SST', 'Chemistry') THEN 1 END) > 0
ORDER BY COUNT(CASE WHEN subName IN ('SST', 'Chemistry') THEN 1 END) DESC

Demo here