gpt4 book ai didi

MySQL select inside select 其中文本字段不为空

转载 作者:行者123 更新时间:2023-11-29 20:09:23 24 4
gpt4 key购买 nike

请问我怎样才能让这个查询工作?

我已经尝试过 D.descricao <> ''/D.descricao IS NOT NULL/ORDER BY LENGTH(descricao) DESC LIMIT 1 ,但什么也没有。

表 produtos 和 cluster8 的连接返回 X 个行。在这一行中,有些行的列描述了一些内容,而其他行则为空。通过子查询(第 2 行),我试图获取一条 descricao 不为空的记录,但直到现在才成功。

我使用子查询的原因是因为当所有行都 descricao = 空时,即使如此也会返回主 SELECT 中的其他字段。

这是 SQLfiddle:sqlfiddle.com/#!9/2806a/1

SELECT P.loja_id, 
P.categoria_id,
C.centroide_produto_id,
(SELECT D.descricao
FROM produtos D
WHERE D.produto_id = C.centroide_produto_id
AND D.descricao <> ''
ORDER BY Length(descricao) DESC) AS descricao
FROM produtos P,
cluster8 C
WHERE P.produto_id = C.centroide_produto_id
AND C.centroide_produto_id = 1926
GROUP BY centroide_produto_id

最佳答案

如果要group by,则需要使用聚合函数,例如summinmax ...您选择的不在分组依据列表中的所有字段。另外,我建议使用内部联接而不是第二个选择。那么您只需要一个 where 子句。您可能需要一个 having 子句,具体取决于您的意图以及您选择的聚合函数。

编辑:

以下内容不会产生匹配的 produto_idnomedescricao,但根据您的 sqlfiddle,这看起来就是您想要的。另外,您似乎应该能够将整个 ORDER BY 子句替换为选择列表中 D.descricao 上的 max() ,但你可以调整这些东西。

SELECT P.produto_id, 
P.nome,
D.descricao
FROM produtos P,
cluster8 C,
produtos D
WHERE P.produto_id = C.centroide_produto_id
AND C.centroide_produto_id = 10
AND D.produto_id = C.similar_produto_id
AND D.descricao <> ''
GROUP BY centroide_produto_id, P.nome -- <-- added P.nome here
ORDER BY Length(D.descricao) DESC

关于MySQL select inside select 其中文本字段不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40230403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com