gpt4 book ai didi

mysql - 根据冲突条件查找行

转载 作者:行者123 更新时间:2023-11-29 00:03:33 24 4
gpt4 key购买 nike

我有一个表格,里面装满了邮件消息,其中包含来自特定域的所有邮件。列是 - domain_name、subject 和 receipt。我想在我的数据库中找到所有已发送“欢迎”邮件和收据的域。

为了让邮件成为收据:

g.receipt != '{}'

为了使邮件成为“欢迎”邮件:

g.subject regexp 'Welcome'

问题是这两个条件造成了冲突。我无法同时搜索它们,因为我将得到 0 个结果。一封邮件可以是欢迎收据。但我需要找到在整个时间内都发送过的域。

我所能做的就是缩小可能性:

   select 
*
from
(select
if(g.receipt != '{}', @R:=1, @R:=0) As Receipt,
if(g.subject regexp 'Welcome', @M:=1, @M:=0) AS Welcome,
g.domain_name,
g.subject,
g.receipt
from
table as g
) as B
where
(@M:= 1 and @R:=0) or (@R:=1 and @M:=0)
group by domain_name, Welcome, Receipt

此代码为我提供了所有发送“欢迎”或收据的域。 (我在数据库中有其他类型的消息)。有什么方法可以对此进行编码,这样我就不需要用眼睛找到它们了吗?

谢谢,我用的是mysql

最佳答案

这应该会为您提供所需的结果。请注意,由于 table 是保留关键字,我将您的表命名为 domains

select distinct domain_name from domains welcome_messages
where
subject like '%Welcome%'
and exists
(
select * from domains receipts
where
receipts.receipt != '{}'
and welcome_messages.domain_name = receipts.domain_name
)

这是一个 sqlfiddle上面的脚本。

关于mysql - 根据冲突条件查找行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28567627/

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