如何从我的 mysql 数据库中 select 最长的文本?

How can I select the longest text from my mysql database?

我对新闻文章进行聚类。我将一些数据分类到多个集群中。我想要做的是从每个包含最长文本内容的集群中获取一个数据。

我有两个 table,我想加入这两个 table 并只显示文本最长的记录。

我的 tables:

Table 新闻内容

news_id   title   content      category
   1      abcd    abcd            a
   2      abcd    abcdefg         a
   3      abcd    abcdefghij      a
   4      efgh    efgh            a
   5      efgh    efghijk         a
   6      efgh    efghijklmn      a
   7      ijkl    ijkl            b
   8      ijkl    ijklmn          b

Table 新闻群

newscluster_id   news_id  category  cluster
      1             1        a        0
      2             2        a        0
      3             3        a        0
      4             4        a        1 
      5             5        a        1
      6             6        a        1

期望的输出:

news_id    title    content    category   cluster
   3       abcd    abcdefghij     a         0
   6       efgh    efghijklmn     a         1 

我该怎么做?

您可以通过使用一系列联接来完成您想要的。但是,我感觉你的模式没有完全规范化。

SELECT t2.news_id,
       t2.title,
       t2.content,
       t2.category,
       t1.cluster
FROM newscluster t1
INNER JOIN newscontent t2
    ON t1.news_id = t2.news_id
INNER JOIN
(
    SELECT t1.cluster, MAX(CHAR_LENGTH(t2.content)) AS max_content_length
    FROM newscluster t1
    INNER JOIN newscontent t2
        ON t1.news_id = t2.news_id
    GROUP BY t1.cluster
) t3
    ON t1.cluster = t3.cluster AND
       CHAR_LENGTH(t2.content) = t3.max_content_length
-- WHERE t2.category = 'a'

试试这个:

select * from (
    select a.*, cluster from newscontent a
    join newscluster b on a.news_id =b.news_id
    order by length(content) desc) x
group by cluster

有些人会抱怨,但如果有用,那就有用!