Saya mencoba untuk MEMILIH 2 kolom dari subquery dalam permintaan berikut, tetapi tidak dapat melakukannya. Sudah mencoba membuat tabel alias, tetapi masih belum bisa mendapatkannya.
SELECT
DISTINCT petid,
userid,
(SELECT MAX(comDate) FROM comments WHERE petid=pet.id) AS lastComDate,
(SELECT userid FROM comments WHERE petid=pet.id ORDER BY id DESC LIMIT 1) AS lastPosterID
FROM
pet LEFT JOIN comments ON pet.id = comments.petid
WHERE
userid='ABC' AND
deviceID!='ABC' AND
comDate>=DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 2 MONTH);
Pada dasarnya, saya mencoba untuk mendapatkan lastComDate
& lastPosterID
dari baris yang sama - baris yang terbaru dalam komentar untuk hewan peliharaan tertentu. Tolong sarankan bagaimana saya bisa mendapatkannya dengan cara yang efisien.
Kueri di atas berfungsi, tetapi tampaknya berlebihan karena baris yang sama diambil dua kali. Selain itu, ORDER BY
klausa secara signifikan lebih lambat daripada fungsi agregat - seperti yang saya temukan saat membuat profil kueri. Jadi, solusi menghindari penyortiran akan dihargai.
deviceID
adalah dari pets
meja - yang berarti bahwa hanya tidak mendapatkan saya hewan peliharaan yang disampaikan oleh 'ABC' dirinya.