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用文字解释您需要什么。