我有两张桌子。
wp_rg_lead_detail:
id lead_id form_id field_number value
=====================================================
166649 2579 4 235 batman
167324 2602 4 235 batman
168439 2579 4 235 kelsey
169221 2836 4 235 batman
wp_rg_incomplete_submissions:
uuid form_id submission
=======================================================================
fds4389dsd2kjd 4 JSON entry that doesn't contain 'kelsey
ciwod2938slsck 4 JSON entry that contains 'kelsey
392copaa234jfl 4 JSON entry that doesn't contain 'kelsey
我想要做的是抓住以下记录:
两个表之间唯一的标识符是“凯尔西”这个词。但是在 wp_rg_lead_detail 中存在的地方, lead_id 还必须有一个带有&#39>蝙蝠侠的值的条目。
我尝试了子查询和连接,但我无处可去。有人可以指出我正确的方向吗?
更新 从下面的反馈来看,听起来我应该创建一个别名,然后将它们加入到两者中存在的位置。我在这里:
SELECT *, 'kelsey' AS myvalue
FROM `wp_rg_lead_detail`
WHERE (`value` LIKE 'batman'
OR `value` LIKE 'kelsey')
AND `form_id` = 4
GROUP BY `lead_id`
HAVING count(*) > 1
我想我不得不加入这个LIKE使用myvalue的地方:
SELECT *, uuid
FROM `wp_rg_incomplete_submissions`
WHERE `form_id` = 4
AND `submission` LIKE concat_ws(";", "%", myvalue, "%")
更新#2
在继续为此努力之后,我提出了:
SELECT *
FROM wp_rg_lead_detail
INNER JOIN wp_rg_incomplete_submissions ON wp_rg_lead_detail.value
LIKE CONCAT('%', wp_rg_incomplete_submissions.submission, '%')
WHERE wp_rg_lead_detail.value = 'kelsey'
我知道我做错了,因为没有结果。但我觉得它比我开始时更接近。
答案 0 :(得分:2)
所以这就是我想出来的,而不是保证它的效率,因为我没有写太多的SQL。
SELECT *
FROM submissions
JOIN (SELECT detail.*
FROM detail
JOIN detail detail2
ON detail2.lead_id = detail.lead_id
WHERE detail.value = 'kelsey'
AND detail2.value = 'batman'
) as detailjoin
ON detailjoin.form_id = submissions.form_id
WHERE submissions.submission LIKE '%kelsey%'
AND submissions.form_id = 4;
您的数据集返回:
'ciwod2938slsck' 4 'JSON with kelsey' 168439 2579 4 235 'kelsey'
因此,要将其细分,内部联接查询会将detail
行'kelsey'
作为value
,其中lead_id
也存在于'batman'
行中{1}} value
。
外部查询会在form_id
4
'kelsey'
和submission
的所有行
然后它只是加入form_id = form_id
上的两个。
我相信这可以满足您的需求,尽管小数据集不是正面的。