选择少查询不起作用

时间:2013-10-02 16:26:49

标签: mysql sql

我想获得一个查询结果,其中数字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个结果。我附上了错误结果的图片。

enter image description here 它应该给我id_msg:20,19,18,17,16 ecc ..

1 个答案:

答案 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