我有两张桌子:
表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查询。
答案 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