我只是遇到一个我不知道如何解决的问题。它与这个(已解决的)问题有关。
就像在另一篇文章中提到的那样,我有一个Media
可以容纳同一用户的许多记录的表,但我只想显示最多六条记录(按顺序,无论如何,只有一张Type
1 图像,然后是最多五个Type
2 图像)。
只要只有一张Type
图片,我现在的查询就可以正常工作,但是当我添加另一张Type
图片时,查询会同时显示它们。不幸的是,像ORDER BY UserMedia.m_Type = 1 DESC LIMIT 1
in an这样的东西GROUP_CONCAT
不起作用,但这正是我所需要的。任何人都有一个聪明的想法如何实现这一点?
我在这里有一个带有相关代码的SQL Fiddle 。我的查询看起来像这样
SELECT
User.u_UserName, User.u_UserMail, User.u_UserRegistration,
Status.us_PaymentStatus,
Sex.us_Gender, Sex.us_Interest,
Personal.up_Name, Personal.up_Dob, Personal.up_City, Personal.up_Province,
UserMedia.m_Id, UserMedia.m_Type, SUBSTRING_INDEX(
GROUP_CONCAT(
CONCAT(
UserMedia.m_Type, ':', UserMedia.m_File
)
ORDER BY UserMedia.m_Type = 1, UserMedia.m_Date DESC SEPARATOR '|'
),'|',6
) AS userFiles
FROM User AS User
JOIN User_Status AS Status ON Status.User_u_UserId = User.u_UserId
JOIN User_Sex_Info AS Sex ON Sex.User_u_UserId = User.u_UserId
LEFT JOIN User_Personal_Info AS Personal ON Personal.User_u_UserId = User.u_UserId
LEFT JOIN Media AS UserMedia ON UserMedia.User_u_UserId = User.u_UserId
WHERE User.u_UserId = '18'
GROUP BY User.u_UserId