MySQL 其中连接不存在或 = 'default' 或 = ''

标签 mysql subquery left-join not-exists

我正在编写一个 MySQL 查询,该查询获取潜在客户列表(来自提交表单的潜在客户)和该订单的乘客计数,其中潜在客户详细信息缺失或为空或 = default。所以我加入了 Lead_detail 表,但只知道如何检查它是否存在,而不知道如何检查它是否不存在。这就是我到目前为止所拥有的 -

SELECT l1.id, (
    /* sub query to get the passenger count from field 22 */ 
    SELECT lm1.`value` FROM lead_detail lm1
    WHERE lm1.form_id = l1.form_id AND lm1.lead_id = l1.id
    AND lm1.field_number = 22
) passengers FROM lead l1

/* join our detail table */
LEFT JOIN lead_detail lm2 ON (l1.id = lm2.lead_id)
WHERE lm2.field_number = 29 AND lm2.form_id = 1
AND lm2.lead_id = l1.id AND (lm2.`value` = 'default' OR lm2.`value` = '')

/* make sure we are on lead form 1 and they have paid */
AND l1.form_id = 1 AND l1.payment_status = 'Paid'

仅供引用,字段编号22 = 乘客人数

字段编号29 = 表单访问 key (空、默认或不存在)

可能值得注意的是,这是 Gravity Forms WordPress 插件,但这绝对是我想要实现的自定义操作。 lm2 表结构如下 -

(int) id
(int) lead_id
(int) form_id
(int) field_number
(string) value

希望我想做什么很清楚。谢谢!

最佳答案

您应该更改 lead_detail 子查询的别名(例如 lm2),或者主查询中同一表的别名。示例:

/* sub query to get the passenger count from field 22 */ 
    SELECT lm2.`value` FROM lead_detail lm2
    WHERE lm2.form_id = l.form_id AND lm2.lead_id = l.id
    AND lm2.field_number = 22

关于MySQL 其中连接不存在或 = 'default' 或 = '',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29386361/

相关文章:

mysql - 散列两个相等的字符串会给出相同的散列值

mysql - 如何加入/子查询第二个表

mysql 连接表而不显示重复数据

sql - 如何根据连接属性的最接近值左连接两个表?

mysql - 如何基于文本搜索高效地从表中删除行?

mysql - `=` 和 `<=>` 之间有性能差异吗?

mysql sql : how to cumulate count ?(计数总和)

mysql - 带有 Wordpress 帖子和 post_meta 的子查询

mysql - 如何删除主键?我得到不正确的表定义

MySQL:选择所有数据,但如果包含 ' * ' ,则显示最后四个字符