从派生表名返回也包含in语句的所有记录

vu8f3i0k  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(198)

我试图从数据库中检索一条记录,但在查询另一条记录之前,我不知道要查询哪个表名。
如果我知道表名和id,那么结束查询将如下所示。

SELECT * FROM `materials_sheet_stock` WHERE `id` = 2

但由于我不知道表名或该表中的id,所以我尝试将其分解一下。
此查询将成功检索上述查询的表名

SELECT tb1.* 
FROM (SELECT `tag_table` 
    FROM `materials_group_tags_mapping` 
    WHERE `tag_id` IN 
        (SELECT `materials_group_tags`.`id` 
         FROM `materials_group_tags` 
         WHERE `materials_group_tags`.`name` = "frameless_base_side_material_unexposed")) AS tb1

在这种情况下 materials_sheet_stock 此查询将成功检索 ID 我在上面的查询中需要的

(SELECT `materials_group_tags_mapping`.`tag_value` 
FROM `materials_group_tags_mapping` 
WHERE `materials_group_tags_mapping`.`tag_id` IN 
    (SELECT `materials_group_tags`.`id` 
    FROM `materials_group_tags` 
    WHERE `materials_group_tags`.`name` = "frameless_base_side_material_unexposed"))

但现在,当我在一个查询中将它们放在一起时,使用in-it会不断抛出关于找不到列或所有表都需要别名的错误。我试着编辑下面的代码已经一个小时了,但没有成功。希望你们能发现错误。这是我正在使用的最后一个代码。

SELECT tb2.* 
FROM (SELECT `tag_table` 
    FROM `materials_group_tags_mapping` 
    WHERE `tag_id` IN 
        (SELECT `materials_group_tags`.`id` 
        FROM `materials_group_tags` 
        WHERE `materials_group_tags`.`name` = "frameless_base_side_material_unexposed") ) as tb2 
        WHERE tb2.`id` IN 
            (SELECT `materials_group_tags_mapping`.`tag_value` 
            FROM `materials_group_tags_mapping` 
            WHERE `materials_group_tags_mapping`.`tag_id` IN 
                (SELECT `materials_group_tags`.`id` 
                FROM `materials_group_tags` 
                WHERE `materials_group_tags`.`name` = "frameless_base_side_material_unexposed"))

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题