首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要选择的具有特定长度的结果和条件的SQL

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

Stack Overflow用户
提问于 2018-02-18 19:38:37
回答 2查看 66关注 0票数 0

我确实搜索了很多,但找不到编写这个sql的方法。我有一个mysql数据库,里面有不同长度的文本。我想选择10段文本,我希望这10段长度的总和在某个长度或字符长度标准之间。有可能吗?也许是子查询?

或者像这样:

代码语言:javascript
复制
SELECT text 
FROM tablename AS result 
WHERE CHAR _LENGHT (result) BETWEEN min AND max
ORDER BY RAND ( ) LIMIT 10

由于别名未被CHAR_LENGTH接受,因此此别名不起作用。

EN

回答 2

Stack Overflow用户

发布于 2018-02-18 19:42:25

这在SQL中是可能的,但既不简单也不推荐。基本上,你需要做10个连接。

让我给你一个有三个的例子,假设你不想要dupicate:

代码语言:javascript
复制
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个表中结束。

票数 2
EN

Stack Overflow用户

发布于 2018-02-18 21:23:01

这只是一个戈登

我本以为我可以使递归CTE工作,但我做不到

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48851230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档