gpt4 book ai didi

mysql 计算行中非唯一数据的组合

转载 作者:行者123 更新时间:2023-11-29 05:25:08 25 4
gpt4 key购买 nike

我有这样的 table

+---+----+
|TID|DATA|
+---+----+
|1 |C |
+---+----+
|1 |F |
+---+----+
|1 |D |
+---+----+
|1 |E |
+---+----+
|2 |X |
+---+----+
|2 |C |
+---+----+
|2 |B |
+---+----+
|2 |F |
+---+----+
|3 |C |
+---+----+

我想根据数据 C 和 F 组的 tid 来计算频率

因此数据 CF 的计数结果将类似于 = 2。(出现在 tid 1 和 2 上)

这是我的问题

select count(data) from tabel where data like '%C%' and '%F%' group by tid

它没有返回想要的结果

是否可以像mysql那样查询结果?或者我需要先在程序中操作它? (我正在使用 vb 网络)

'更新要求

我想动态创建组合。有可能这样做吗?我想使用 while 遍历 if 语句。但它没有返回任何结果并给了我一个错误

这是我的代码。它仍然是错误,我认为原因是因为我不能在 IF CONDITIONAL

上使用 ALIAS COLUMN
select count(*) from (
select kode_faktur,


if `DATA` like '%F%' and '%B%' then 1
else 0
end if

AS freq

FROM `table`
GROUP BY tid
HAVING freq = 2
) t

这就是我想做的,通过 WHILE 迭代 IF CONDITIONAL

select count(*) from (
select kode_faktur,

while i<x
if `DATA` like '%i%' then 1
else 0
end if

AS freq

FROM `table`
GROUP BY tid
HAVING freq = x
) t

这是来自@Aziz Shaikh 的原始代码,这段代码有效

SELECT COUNT(*) FROM (
SELECT tid,
SUM(CASE
WHEN `data` LIKE '%C%' THEN 1
WHEN `data` LIKE '%F%' THEN 1
ELSE 0
END
) AS freq
FROM `table`
GROUP BY tid
HAVING freq = 2
) t

我个人认为这在 mysql 中太复杂了。我选择这样做是为了节省我的时间,而不是在程序中编写一些代码。原因是因为我的程序已经使用了太多的连接并且还在处理大数据。所以我认为 mysql 可以作为我的需求的替代品

最佳答案

试试这个:

SELECT COUNT(*) FROM (
SELECT tid,
SUM(CASE
WHEN `data` LIKE '%C%' THEN 1
WHEN `data` LIKE '%F%' THEN 1
ELSE 0
END
) AS freq
FROM `table`
GROUP BY tid
HAVING freq = 2
) t

关于mysql 计算行中非唯一数据的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21084980/

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