MySQL - 从多个表中选择特定行

时间:2011-01-16 22:24:28

标签: mysql sql

我有一组名为like的数据库表:

site_1_details
site_2_details
site_3_details
...
site_420_details

所有表都有相同的字段,例如:

ID  | SETTING | VALUE 
----------------------
1     name      Site 1 Name
2     desc      Site 1 Desc
3     email     Site 1 Email...
...

(只有值字段不同)

如何从某些表中获取一组值?

例如,我想获得名称&来自站点3,7和15的电子邮件值。如何使用SQL查询执行此操作?

1 个答案:

答案 0 :(得分:4)

SELECT 3 AS siteID, name, email
FROM site_3_details

UNION

SELECT 7 AS siteID, name, email
FROM site_7_details

UNION

SELECT 15 AS siteID, name,email
FROM site_15_details

这是一个非常糟糕的设计。为什么不能将“siteID”字段放入单个表中,这会将查询减少到:

SELECT name, email
FROM site_details
WHERE siteID IN (3,7,15);

评论后续:

好吧,那么你只需要修改各个查询:

SELECT 7 AS siteID, ID as fieldID, name AS fieldName
FROM site_7_details WHERE SETTING IN ('name', 'email')

UNION

....

你设计这样的表的原因是什么?听起来你正试图在数据库引擎的TOP上实现自己的数据库,这已经非常适合进行这种关系数据处理。