我不确定这只是一个查询是否可行..(可能需要一些PHP解析?返回数据后?)
我已经设置了MySQL表。
列如下:
id
topic
title
vimeo_id
video_length
speaker_first
speaker_last
speaker_designation
description
记录如:
1 topic1 title-asda 1719887 speakerFirst-1 speakerLast-1 desc.xxx
2 topic2 title-asdf 1719554 speakerFirst-2 speakerLast-2 desc.xxx
3 topic1 title-ghty 1719445 speakerFirst-3 speakerLast-3 desc.xxx
4 topic3 title-bnh6 1719676 speakerFirst-4 speakerLast-4 desc.xxx
5 topic1 title-gffd 1711121 speakerFirst-5 speakerLast-5 desc.xxx
6 topic4 title-fgdf 1896621 speakerFirst-6 speakerLast-6 desc.xxx
7 topic2 title-tyuu 1005674 speakerFirst-7 speakerLast-7 desc.xxx
我希望得到一个输出(如果可能的话):
(即:唯一的TOPIC(不需要每次都列出)..以及发言者最后订购的子记录)
如果我需要在php端解析这个问题..(即:检查currentTopic == prevTopic)是否输出到屏幕之前..我可以这样做..只是不确定如何查询事物是按主题分组,......然后是speaker_last)
我试过这个:
SELECT * FROM (
SELECT topic, speaker_first, speaker_last, title
FROM vimeo_videos
ORDER BY speaker_last DESC
) AS tmp_table GROUP BY topic
但它似乎只为每个主题获取“1”条目..而不是每个主题下的所有条目。
这似乎让我得到了整个清单:
SELECT * FROM vimeo_videos order by topic, speaker_last;
我想我可以循环使用PHP并检查一个'新主题来创建我的'分组'?
(只是想确保没有更好/更有效的方法)
答案 0 :(得分:0)
方法1:
你可以做的是先做:
SELECT topic FROM mytable GROUP BY topic
然后,您将获得所有不同的主题,并且每个主题都可以:
SELECT * FROM mytable WHERE topic = :mytopic
方法2:
使用带有自定义回调的usort函数在php中对它进行排序。
答案 1 :(得分:-1)
正如内森所说,你可以使用GROUP BY
来获取唯一的主题,然后进行另一个查询来完成每个主题。
这是GROUP BY
的SQL小提琴示例:
http://sqlfiddle.com/#!9/193cd2/1
如果您想减少查询量,您应该按照自己的foreach
语句和ORDER BY topic