【发布时间】:2018-11-09 04:40:23
【问题描述】:
如何从多个表中选择行加入特定键?
我有几个表states(year) 具有相同的结构。我想创建一个视图,仅从states(year) 中选择行,其中propertyid 包含在特定用户下的表properties 中:
CREATE OR REPLACE VIEW selected_states AS
SELECT *, 2017 AS year FROM states2017
UNION ALL SELECT *, 2018 AS year FROM states2018
AS s
JOIN properties p ON s.propertyID = p.propertyID WHERE p.userID=1
遇到错误
使用的 SELECT 语句的列数不同
SQLfiddle:http://sqlfiddle.com/#!9/aca397c
【问题讨论】:
-
你为什么想要一个视图?
-
我希望稍后在另一个查询中使用该 VIEW。
-
我不鼓励这样做。 MySQL 在优化视图方面很差。
-
无论如何,无论你想使用哪种 SELECT,都不要使用
SELECT *。相反,请始终命名您实际希望返回的所有列 - 即使它们就是所有列。 -
此外,每当您发现自己使用枚举列时,警钟应该开始响起。只需有一个带有年份(或任何类型的时间戳)列的状态表。
标签: mysql