mysql-子查询并返回列中的条件值
假设我有一个事件表,其中包含关于按姓名与某人关联的各种事件的日志mysql-子查询并返回列中的条件值,mysql,Mysql,假设我有一个事件表,其中包含关于按姓名与某人关联的各种事件的日志 +--------+-------------------------+--------------------+ | name | eventName | data(json) | +--------+-------------------------+--------------------+ | John | email send success | '{&quo
+--------+-------------------------+--------------------+
| name | eventName | data(json) |
+--------+-------------------------+--------------------+
| John | email send success | '{"meta": "data"}' |
+--------+-------------------------+--------------------+
| John | email send failed | '{"meta": "data1"}'|
+--------+-------------------------+--------------------+
| John | created acct success | '{"meta": "data2"}'|
+--------+-------------------------+--------------------+
| Jane | email send failed | '{"meta": "data1"}'|
+--------+-------------------------+--------------------+
| Jane | created acct success | '{"meta": "data2"}'|
+--------+-------------------------+--------------------+
我要做的是创建一个查询,该查询将返回未将eventName='email send success'关联到name列的用户的结果
问题
我当前的解决方案是下面用javascript实现的
const results=sql.query`SELECT*FROM event其中eventName='send email failed'`
//返回上面示例表的数组表示形式
结果常数{
const subQuery=sql.query`SELECT*FROM event其中eventName='send email success'和name=${r.name}`
if!subQuery.length{
//从不发送电子邮件,重新发送电子邮件
}
//已发送电子邮件,但不执行任何操作
}
正如您从上面的代码中看到的,我正在获取所有数据,然后对每个记录执行另一个查询,以查看eventName=email send是否成功,以查看是否已发送电子邮件
我想要什么
如下所示的查询:
选择
*,
ift1.name='email send success',t1.name作为name,
ift1.name='email send success',t1.data作为数据
从…起
挑选*
来自用户
其中eventName='email发送失败'
as t1
以t2.name=t1.name上的t2身份加入用户
上面的代码不起作用,所以这是我的想法。我创建一个子查询,该子查询将获取eventName='email send failed'中的所有数据,并将其返回到外部查询,该查询将显示用户没有关联eventName'email send success'的数据
我希望从查询中得到的是:
+--------+-------------------------+---------------------------------+
| name | eventName | timestamp | data(json) |
+--------+-------------------------+---------------------------------+
| Jane | send email failed | (UTC DATE) | '{"meta": "data1"}'|
+--------+-------------------------+---------------------------------+
如果你看小提琴,我想让Jane回来的原因是因为Jane的eventName列没有vale send email success,因此我们需要向她发送另一封电子邮件。但是,John这样做了,我们不需要再发送一个基本查询,如。。返回查询文本,输出不匹配。提供示例数据创建表并插入到脚本中,可能会跳过多余的列,并获得此数据所需的结果。同时指定精确的MySQL版本。好的,给我一分钟时间,我添加一个db fiddle添加了一个fiddle@AkinaNow用文字解释您需要什么。