在另一个查询中使用查询结果

时间:2019-01-24 18:49:19

标签: mysql database

我正在使用Wordpress和WPForms插件,该插件将表单项存储在数据库中,如下所示:

(对我来说,这似乎不是最合逻辑/最佳的数据库设计,但我别无选择)。

database

考虑上表。我需要选择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' ); FROM meta_value WHER')附近使用的语法错误。

2 个答案:

答案 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)

根据您的第一次直觉,您也可以使用自联接来实现:

mylib/
     BUILD
     mylib.h
     mylib.c
     mylib-private.h
     tests/
         test.c

尝试here