我们正在尝试使用PHP和MYSQL构建一个应用程序,我们有超过5个不同的类别明智表,如tblcategory1
,tblcategory2
,tblcategory3
等等。
每个类别表在所有表中都有一个共同的userID
字段。
我们希望在所有表格中检查我们对该特定userID
的条目。
是否有任何查询来检查多个表?
谢谢(提前)
答案 0 :(得分:2)
是的,您需要查看UNION关键字。它大致类似于:
SELECT columnName
FROM category1
WHERE userID = 1
UNION
SELECT columnName
FROM category2
WHERE userID = 1
UNION
SELECT columnName
FROM category2
WHERE userID = 1
这基本上是3个单独的查询,它们都作为一个运行,结果全部连接在一起形成一个结果列表。
了解更多信息:UNION
答案 1 :(得分:1)
@LaurenceFrost答案的另一种结构是使用UNION ALL
将表格合并在一起,然后过滤该结果。
SELECT
columnName
FROM
(
SELECT userID, columnName FROM tblcategory1
UNION ALL
SELECT userID, columnName FROM tblcategory2
UNION ALL
SELECT userID, columnName FROM tblcategory3
UNION ALL
SELECT userID, columnName FROM tblcategory4
UNION ALL
SELECT userID, columnName FROM tblcategory5
)
ilvCategoryAll
WHERE
userID = 1
当您拥有JOIN和其他业务逻辑时,这种布局会变得更加友好,您不必为每个源表重复这些逻辑。
另外,应该注意我使用了UNION ALL
而不是UNION
。这是因为UNION
明确删除了重复项,这可能是一个昂贵的过程(即使没有重复项要查找)。但是,UNION ALL
不会进行重复数据删除,而且成本也会大大降低。
注意:ilv
中的ilvCategoryAll
表示" in-line-view"。