多个UNION和JOIN ON

时间:2018-05-30 10:48:59

标签: mysql

如何从多个表中选择行加入特定键?

我有几个具有相同结构的表build-extras.gradle。我想在VIEW中选择states(year)中包含特定用户下表states(year)中包含的propertyid的行:

properties

收到错误

  

使用的SELECT语句具有不同的列数

SQLfiddle:http://sqlfiddle.com/#!9/aca397c

1 个答案:

答案 0 :(得分:0)

的结构
SELECT *, 2017 AS year FROM states2017

SELECT *, 2018 AS year FROM states2018

不一样。第一个表格的最后一列是2017,而第二个表格的最后一列是2018,因此无法统一。

要解决此问题,请在两个表中创建多年的公共别名。

CREATE OR REPLACE VIEW selected_states AS
SELECT s.*, p.userID FROM
(SELECT states2017.*, '2017' `Year` FROM states2017
UNION ALL 
SELECT states2018.*, '2018' `Year` FROM states2018) s
JOIN properties p ON s.propertyID = p.propertyID WHERE p.userID=1;

查看DEMO on SQL Fiddle