繁体   English   中英

选择具有特定长度的结果总和条件的SQL

[英]SQL to select with specific length of results sum criteria

我做了很多搜索,但是找不到写此sql的方法。 我有一个mysql db,其中包含各种长度的文本。 我想选择10条文本,我希望那10条文本的长度之和在某个长度或字符长度标准之间。 可能吗? 子查询也许?

或像这样:

SELECT text 
FROM tablename AS result 
WHERE CHAR _LENGHT (result) BETWEEN min AND max
ORDER BY RAND ( ) LIMIT 10

由于别名未被收录到CHAR_LENGTH中,因此此功能无效。

这在SQL中是可能的,但既不简单也不建议。 基本上,您需要进行10次连接。

让我给您一个包含三个示例,假设您不希望出现重复:

select t1.text, t2.text, t3.text
from t t1 join
     t t2
     on t1.text < t2.text
     t t3
     on t2.text < t3.text
where length(t1.text) + length(t2.text) + length(t3.text) = ?

问题在于,这考虑了所有可能性-基本上是在做巨大的笛卡尔积。 即使表中有几十行,查询也可能无法完成10个表。

这和戈登一样
我以为我可以进行递归CTE工作,但不能

declare @len table (iden int IDENTITY(1,1) primary key, tlen int);
insert into @len(tlen) values (1), (2), (3), (4), (5), (6), (12), (11), (10), (9), (8), (7);
--select * from @len order by iden;

select l1.tlen, l2.tlen, l3.tlen
from @len l1 
join @len l2
  on l2.tlen > l1.tlen  
join @len l3
  on l3.tlen > l2.tlen  
where l1.tlen + l2.tlen + l3.tlen = 15 
order by l1.tlen, l2.tlen, l3.tlen;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM