我想获得一个查询结果,其中数字id是<这一个是查询:
SELECT *
FROM (
SELECT users.name, users.surname, users.username, inbox_msg.message, inbox_msg.id_msg, inbox_msg.occured_at, image_upload.name_image
FROM inbox_msg
INNER JOIN users ON users.id = inbox_msg.id_user
INNER JOIN image_upload ON image_upload.id_image = users.profile_image
WHERE inbox_msg.id_conversation = 1
AND inbox_msg.id_msg < 21
LIMIT 10
)mex
ORDER BY occured_at ASC
我不知道为什么得到的结果是我表的前10个结果。我附上了错误结果的图片。
它应该给我id_msg:20,19,18,17,16 ecc ..
答案 0 :(得分:1)
这是因为在没有排序的情况下应用了LIMIT 10
。您应该重新安排查询以在限制之前应用排序,以便具有最高id_msg
的行出现在前十位:
SELECT *
FROM (
SELECT users.name, users.surname, users.username, inbox_msg.message, inbox_msg.id_msg, inbox_msg.occured_at, image_upload.name_image
FROM inbox_msg
INNER JOIN users ON users.id = inbox_msg.id_user
INNER JOIN image_upload ON image_upload.id_image = users.profile_image
WHERE inbox_msg.id_conversation = 1
AND inbox_msg.id_msg < 21
ORDER BY id_msg DESC -- <<== Add this line
LIMIT 10
)mex
ORDER BY occured_at ASC