GVKun编程网logo

从类别中选择最新主题(SQL和PHP)

26

对于想了解从类别中选择最新主题(SQL和PHP)的读者,本文将是一篇不可错过的文章,并且为您提供关于android–从每个类别中选择至少一个?、mysql从同一表中选择类别e子类别、MySQL从同一表

对于想了解从类别中选择最新主题(SQL和PHP)的读者,本文将是一篇不可错过的文章,并且为您提供关于android – 从每个类别中选择至少一个?、mysql从同一表中选择类别e子类别、MySQL从同一表中选择,但从具有相同限制的不同类别中选择、MYSQL从每个类别中选择一个随机记录的有价值信息。

本文目录一览:

从类别中选择最新主题(SQL和PHP)

从类别中选择最新主题(SQL和PHP)

我希望能够通过SQL查询选择发布到类别的最新主题.

我有两个要使用的表.

>类别
>主题

主题行知道它属于哪个类别,因为topic.topic_cat应该与category.cat_id相匹配.

我想遍历所有类别并显示发布到它们的最新主题.看起来像这样.

while($row = $result->fetch_assoc()) {
    echo $row['cat_name'] . ' Latest Post is ' . $row['topic_name'];
}

这将是执行后的样子的一个示例.

category1 Latest Post is "latest post"
category2 Latest Post is "latest post"
category3 Latest Post is "latest post"

等等…

我可以使用哪个SQL查询来选择它?

这是我的表结构.

分类

> cat_id
> cat_name
> cat_description

主题

> topic_id
> topic_name
> topic_date
> topic_cat
> topic_by

解决方法:

更新资料

这是一个更有效的查询,可为您提供相同的结果.它将执行得更好,因为子查询与外部查询不相关(不使用任何数据)

SELECT cat_name, topic_name, latest as topic_date 
FROM categories c
LEFT JOIN ( 
    SELECT topic_name, topic_cat, MAX(topic_date) latest 
    FROM topics
    GROUP BY topic_cat
     ) as t
ON c.cat_id = t.topic_cat

Live demo

您询问了LEFT JOIN与JOIN:第一种方法意味着,如果任何类别都没有主题,那么您仍然希望它包含在结果中.主题名称和日期将为空. JOIN表示您希望结果仅包含具有匹配主题的类别.因此,您可以根据自己的喜好更改我的任何一个查询.

原始答案

这是您需要的:

SELECT c.cat_name, t.topic_name, t.topic_date 
FROM categories c
LEFT JOIN topics t ON c.cat_id=t.topic_cat
WHERE topic_date = (
    SELECT MAX(t2.topic_date)
    FROM topics t2
    WHERE t2.topic_cat = t.topic_cat
)

该查询将仅返回每个类别的最新主题.每个结果都有字段:

cat_name | topic_name | topic_date

执行查询后,您可以根据需要运行循环:

while($row = $result->fetch_assoc()) {
    echo $row['cat_name'] . ' Latest Post is ' . $row['topic_name'];
}

Live demo

android – 从每个类别中选择至少一个?

android – 从每个类别中选择至少一个?

SQLFiddle Link

我有一个带有一堆测试/考试问题的sqlite数据库.每个问题属于一个问题类别.

我的表看起来像这样:

目标
我要做的是选择5个随机问题,但结果必须至少包含每个类别中的一个.目标是从每个类别中选择一组随机问题.

例如,输出可以是问题ID 1,2,5,7,8或2,3,6,8或8,1,7.

ORDER BY category_id,RANDOM()
我可以通过执行下面的sql从sqlite中获取一个随机的问题列表,但是我如何确保结果包含来自我的每个类别的问题?

基本上,我正在寻找类似this的sqlite版本.

我想只获得5个结果,但每个类别中只有一个(或更多),结果集中包含所有类别.

赏金
添加了赏金,因为我很好奇是否可以在sqlite中完成此操作.我可以在sqlite Java中做到这一点,但有没有办法只在sqlite中执行此操作?

总结

以上是小编为你收集整理的android – 从每个类别中选择至少一个?全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

mysql从同一表中选择类别e子类别

mysql从同一表中选择类别e子类别

您可以这样做:

select category as rendered from products
union all 
select concat(category,' > ',subcategory) from products
union all 
select concat(category,subcategory,subsubcategory) from products
order by rendered

MySQL从同一表中选择,但从具有相同限制的不同类别中选择

MySQL从同一表中选择,但从具有相同限制的不同类别中选择

除非在子查询中,否则

DROP TABLE IF EXISTS T;
CREATE TABLE T(ID INT,CATEGORY VARCHAR(20));
INSERT INTO T VALUES (1,'HISTOIRE'),(2,(3,'CULTURES'),(4,'SUJET DIVERS'),(5,(6,'SUJET DIVERS');

SELECT * FROM 
(SELECT * FROM T WHERE category='Histoire' LIMIT 2) A
UNION ALL
(SELECT * FROM T WHERE category='Cultures' LIMIT 2) 
UNION ALL
(SELECT * FROM T WHERE category='Sujet Divers' LIMIT 2) 
ORDER BY id DESC

+------+--------------+
| ID   | CATEGORY     |
+------+--------------+
|    5 | SUJET DIVERS |
|    4 | SUJET DIVERS |
|    3 | CULTURES     |
|    2 | HISTOIRE     |
|    1 | HISTOIRE     |
+------+--------------+
5 rows in set (0.001 sec)
,

您需要子查询:

(SELECT * FROM makale WHERE category = 'Histoire' LIMIT 12)
UNION ALL
(SELECT * FROM makale WHERE category = 'Cultures' LIMIT 12)
UNION ALL
(SELECT * FROM makale WHERE category = 'Sujet Divers' LIMIT 12)
ORDER BY id DESC;

您也可以使用窗口函数来编写此代码,但这不是您的问题。

注意:这将为每个类别返回任意 12行。我将按原样保留代码,因为这可以回答您提出的问题。但是,如果要特定的一组12行,则应在每个子查询中使用ORDER BY

MYSQL从每个类别中选择一个随机记录

MYSQL从每个类别中选择一个随机记录

我有一个带有Items表的数据库,看起来像这样:

idnamecategory (int)

有数十万条记录。每个item可以在7个不同categoriescategories表之一中,对应于一个表:

idcategory

我想要一个从每个类别中选择1个随机项目的查询。解决这个问题的最佳方法是什么?我知道使用Order By rand()LIMIT1用于类似的随机查询,但是我从未做过这样的事情。

答案1

小编典典

此查询以随机顺序返回加入类别的所有项目:

SELECTc.id AS cid, c.category, i.id AS iid, i.nameFROM categories cINNER JOIN items i ON c.id = i.categoryORDER BY RAND()

要将每个类别限制为一个类别,请将查询包装在 partial中 GROUP BY

SELECT * FROM (    SELECT    c.id AS cid, c.category, i.id AS iid, i.name    FROM categories c    INNER JOIN items i ON c.id = i.category    ORDER BY RAND()) AS shuffled_itemsGROUP BY cid

请注意,当查询同时具有GROUP BYand ORDERBY子句时,将在排序之前执行分组。这就是为什么我使用了两个查询的原因:第一个对结果进行排序,第二个对结果进行分组。

我了解此查询不会赢得任何比赛。我愿意提出建议。

今天关于从类别中选择最新主题(SQL和PHP)的介绍到此结束,谢谢您的阅读,有关android – 从每个类别中选择至少一个?、mysql从同一表中选择类别e子类别、MySQL从同一表中选择,但从具有相同限制的不同类别中选择、MYSQL从每个类别中选择一个随机记录等更多相关知识的信息可以在本站进行查询。

本文标签: