我正在尝试从我的数据库中检索单个记录,但是在查询另一条记录之前,我不知道要查询哪个表名。
如果我知道表名和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将它们全部放在1个查询中时,它会不停地抛出关于找不到列的错误,或者所有表都需要别名。我已经尝试编辑以下代码一小时没有运气。希望你们能发现错误。这是我正在使用的最终代码。
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"))