我正在使用Wordpress和WPForms插件,该插件将表单项存储在数据库中,如下所示:
(对我来说,这似乎不是最合逻辑/最佳的数据库设计,但我别无选择)。
考虑上表。我需要选择select cv.*
From CatalogBuilder.CatalogVersion cv
JOIN(select max(c.CatalogVersionID) as max_id
from [CatalogBuilder].[CatalogVersion] c
inner join [CatalogBuilder].[Catalog] cat on c.CatalogID = cat.CatalogID
inner join [CatalogBuilder].[Group] g on g.GroupID = cat.GroupID
where g.GroupID = 157)
b on b.max_id = cv.CatalogVersionID
包含单词“ Houd”的行的条目ID。
我写了这个查询,它做得很好:
meta_value
现在,我需要选择获取电子邮件地址(即SELECT entry_id
AS entries
FROM `wp_wpforms_entrymeta`
WHERE `meta_value`
LIKE '%Houd%'
)。其中entry_id等于上述查询获取的ID之一。
entries_for_wpforms_field_id_8
如何在其他查询的位置中使用上一个查询的ID列表?
我尝试使用交叉联接,如下所示:
SELECT meta_value
FROM `wp_wpforms_entrymeta`
WHERE `meta_key` = 'entries_for_wpforms_field_id_8'
AND `entry_id` = <result of other query>;
它导致语法错误:
第6行中'CROSS JOIN(SELECT
SELECT entry_id AS entries FROM `wp_wpforms_entrymeta` WHERE `meta_value` LIKE '%Houd%' CROSS JOIN ( SELECT `meta_value` FROM `wp_wpforms_entrymeta` WHERE `meta_key` = 'entries_for_wpforms_field_id_8' );
FROMmeta_value
WHER')附近使用的语法错误。
答案 0 :(得分:1)
您可以使用存在的
SELECT `meta_value`
FROM `wp_wpforms_entrymeta` q
WHERE `meta_key` = 'entries_for_wpforms_field_id_8' and exists (
SELECT 1
FROM `wp_wpforms_entrymeta` qin
WHERE `meta_value` LIKE '%Houd%' and q.entry_id = qin.entry_id
)
答案 1 :(得分:0)