У меня две таблицы: статьи и теги
articles: id, author, date_time, article_text
articletags: id, tag
(article.id == articletags.id in a many-to-many relationship)
Я после того, как последний раз что-то публиковалось под каждым тегом Другими словами, для каждого тега просмотрите все статьи, к которым он относится, найдите самую последнюю и верните ее.
например статьи:
1, me, 12 Nov, Sometext
2, me, 13 Nov, Sometext
3, me, 14 Nov, Sometext
теги статей
1, foo
1, bar
2, foo
3, bar
Я хочу вернуться:
foo, 13 Nov
bar, 14 Nov
Я могу добраться до внутреннего соединения, и тогда я в тупике. Я не думаю, что предложение DISTINCT - это то, что мне нужно, и я недостаточно знаком с подзапросами, чтобы знать, поможет ли это.
SELECT date_time, tag
FROM articles, articletags
WHERE articles.id = articletags.id
Это вообще возможно?


SELECT date_time, tag
FROM articles, articletags
WHERE articles.id = articletags.id
ORDER BY date_time DESC
GROUP BY tag
@Hyposaurus: в стандарте SQL говорится, что GROUP BY предшествует ORDER BY.
@SoapBox: проблема в том, что он возвращает все строки, а не только строку максимальной даты для каждого тега.
select t.tag, max(a.date_time) as latest
from articles a
inner join articletags t
on t.id = a.id
group by t.tag
На самом деле это возвращает самую старую запись, а не самую последнюю. Похоже, это поведение по умолчанию, поэтому для него требуется предложение max, как в решении Гордена Белла. Во-вторых, если вы используете MySQL, вам нужно поменять местами Order By и Group by, чтобы это работало. Я не знаю почему, но ты знаешь.