如果问题看起来太基础,我很抱歉.
我已经浏览了整个互联网和StackOverflow以获得完整的解决方案,并没有找到任何我能理解的内容,也无法自己编写,所以不得不在这里问一下.
我有一个MySQL数据库.
它有一个名为"已发布"的表.
它有8列.
我需要输出这个结果:
SELECT DISTINCT link FROM posted WHERE ad='$key' ORDER BY day, month
但我不仅需要"链接"列,还需要此行的其他列.
对于使用此查询返回的每一行,我还需要知道表中的"id","day"和"month"值等.
请告诉我应该阅读什么,或如何制作它.
请保持尽可能简单,因为我不是MySQL的专家.
编辑:我试过这个:
SELECT DISTINCT link,id,day,month FROM posted WHERE ad='$key' ORDER BY day, month
它不起作用.它返回太多行.假设有10行具有相同的链接,但不同的日/月/ ID.这个脚本将返回全部10个,我只想要第一个(对于这个链接).
Dra*_*ord 88
问题来自本能地相信这DISTINCT是一个列的局部预修改器.
因此,你"应该"能够打字
XXbadXX SELECT col1, DISTINCT col2 FROM mytable XXbadXX 
让它返回2的唯一值col.   可悲的是,没有.  DISTINCT实际上是一个全局的后置修饰符SELECT,也就是说,与SELECT ALL(返回所有答案)相反SELECT DISTINCT(返回所有唯一答案).因此,单个DISTINCT作用于您提供的所有列.  
这使得DISTINCT在单个列上使用它变得非常困难,同时获得其他列,而不会执行非常难看的后期翻转.  
正确的答案是GROUP BY在您希望获得唯一答案的列上使用a :   SELECT col1, col2 FROM mytable GROUP BY col2  将为您提供任意唯一col2行及其col1数据.
我试过这个:
Run Code Online (Sandbox Code Playgroud)SELECT DISTINCT link,id,day,month FROM posted WHERE ad='$key' ORDER BY day, month它不起作用.它返回太多行.假设有10行具有相同的链接,但不同的日/月/ ID.这个脚本将返回全部10个,我只想要第一个(对于这个链接).
你问的是没有意义的.
要么你想要所有的不同值link, id, day, month,要么你需要找到一个标准来选择id, day, month你想要使用哪个值,如果你只想要一个不同的值link.
否则,你所追求类似于MySQL的隐藏的列GROUP BY/ HAVING报表,这是非标准的SQL,并且实际上可以相当混乱.
实际上,GROUP BY link如果为给定link值选择任何行,则可以使用a .
或者,您可以使用子选择来id为每个link值选择最小值的行(如本答案中所述):
 SELECT link, id, day, month FROM posted
     WHERE (link, id) IN
           (SELECT link, MIN(id) FROM posted ad='$key' GROUP BY link)
SELECT Id, Link, Day, Month FROM Posted
WHERE Id IN(
   SELECT Min(Id) FROM Posted GROUP BY Link)
SELECT DISTINCT link,id,day,month FROM posted WHERE ad='$key' ORDER BY day, month
或者
SELECT link,id,day,month FROM posted WHERE ad='$key' ORDER BY day, month