【问题标题】:SQL Select Distinct doesn't workSQL Select Distinct 不起作用
【发布时间】:2017-05-15 07:52:51
【问题描述】:

我正在创建一个论坛,我希望将最新主题与其所属的类别并排显示。但是,当某人在同一类别中创建主题两次时,它会显示该类别两次,并在右侧显示不同的主题。

这有点对,但我希望它只显示一个类别。我为此尝试了 SQL SELECT DISTINCT,但它似乎不起作用,谁能告诉我语法是否有问题或问题出在其他地方?

$sql = '
    SELECT DISTINCT topics.topic_id, topics.topic_subject, topics.topic_by, categories.cat_id, categories.cat_name, categories.cat_description FROM topics JOIN categories ON topics.topic_cat = categories.cat_id ORDER BY topics.topic_date DESC LIMIT 3
';

另外,我想指出LIMIT 3 的原因是因为这是来自主页,应该只显示 3 个类别。该问题在首页和分类页面都存在。

【问题讨论】:

  • 您是否尝试过按不同的 cat_id 进行选择?如果您想将其限制为每个类别一个,那将更有意义
  • 你在用什么rdbms?
  • 添加一些示例表数据和预期结果 - 以及格式化文本。
  • @FMashiro 我可以试试这个,但是我要把语法改成什么?
  • @Mureinik 我不完全确定,我对此很陌生,但我认为答案是 MariaDB

标签: php sql


【解决方案1】:

您选择了多个带有distinct 的列,即

SELECT DISTINCT topics.topic_id, topics.topic_subject, topics.topic_by, categories.cat_id, categories.cat_name, categories.cat_description

我不认为有这么多列可以区分 distinct 和 non distinct 值。

【讨论】:

  • 是的,这是有道理的,但我不确定我应该将其更改为什么,并且不必查询两次
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-12
  • 2010-10-29
  • 1970-01-01
  • 2020-04-05
  • 1970-01-01
相关资源
最近更新 更多