我是数据库的学习者,我想我在问一个非常基本的问题,请忍受。
我想从表中获取值列表。值列表将根据某些条件排序。
示例:我在大学表中有一列名为courseOffered的列,我在其中保存了以下字符串:java,c ++,android等。
我在用户表中还有另外两列称为primarySubject和secondarySubject。
我的第一个获取逻辑是,根据primarySubject,大学表的行值必须在列表中为第一优先级,然后根据secondarySubject,大学表的行值必须在列表中为第二优先级,其余值将最后附加到列表中与primarySubject或secondarySubject无关。
到目前为止,我尝试了什么:
SELECT *
FROM test.college
WHERE Courses_Offered LIKE CONCAT('%',RTRIM((SELECT
Primary_Subject
FROM test.user
WHERE Email = '[email protected]')),'%')
OR Courses_Offered LIKE CONCAT('%',RTRIM((SELECT
Secondary_Subject
FROM test.user
WHERE Email = '[email protected]')),'%')
OR LOWER(Location)IN(SELECT
LOWER(Location)
FROM test.user
WHERE Email = '[email protected]')
上面的查询获取所有数据,但不是我上面想要的,它的获取是将行存储在表中,现在我想对上述查询中的每个获取进行某种分组,我应该怎么做?
最佳答案
这样,您可以使用分组依据和排序依据
SELECT *
FROM test.college
WHERE Courses_Offered LIKE CONCAT('%',RTRIM((SELECT Primary_Subject FROM test.user WHERE Email = '[email protected]')),'%')
OR Courses_Offered LIKE CONCAT('%',RTRIM((SELECT Secondary_Subject FROM test.user WHERE Email = '[email protected]')),'%')
OR LOWER(Location)IN(SELECT LOWER(Location) FROM test.user WHERE Email = '[email protected]')
GROUP by college.column_name
ORDER BY college.first_column_name ASC , college.second_column_name DESC