我在仅选择一名用户发布的一个值时遇到问题。
SELECT DISTINCT(zprava.id_prijemce),
uzivatele.jmeno,
uzivatele.prijmeni,
zprava.zobrazeno
FROM zprava
INNER JOIN uzivatele
ON zprava.id_prijemce = uzivatele.id
WHERE id_uzivatele = $id_uzivatele
ORDER BY datum DESC
这就是我得到的:
id_prijemce | jmeno | prijmeni | zobrazeno
31 | Michal | Harych | 0
31 | Michal | Harych | 1
35 | Karel | Pepík | 0
这就是我需要得到的:
id_prijemce | jmeno | prijmeni | zobrazeno
31 | Michal | Harych | 1
35 | Karel | Pepík | 0
我不需要获取“zobrazeno”值较高的行,而是最新发布的行,因此它也可以是0。
感谢您的建议。
最佳答案
使用子查询来识别zprava
表中的最新记录,将其连接回zprava
和uzivatele
以获得结果你想要的。
SELECT
t1.id_prijemce,
t3.jmeno,
t3.prijmeni,
t1.zobrazeno
FROM zprava t1
INNER JOIN
(
SELECT id_prijemce, MAX(datum) AS max_datum
FROM zprava
GROUP BY id_prijemce
) t2
ON t1.id_prijemce = t2.id_prijemce AND
t1.datum = t2.max_datum
INNER JOIN uzivatele t3
ON t1.id_prijemce = t3.id
WHERE t1.id_uzivatele = $id_uzivatele
ORDER BY t1.datum DESC
关于php - SQL 查询用于选择具有 DISTINCT 的值并且最后仅发布一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43204263/