Sql UNION具有附加原始列的相同表

时间:2018-01-05 12:17:41

标签: sql postgresql database-design union

我有两张相同的桌子。每年一次。

  • 15_docs:

    id,name,org,slo,dok

  • 16_docs:

    id,name,org,slo,dok

现在我想用两者的UNION创建视图,但我需要知道行的原点。

输出视图:

id, name, org, slo, dok, year

我怎样才能实现这一目标? 我正在使用postgreSQL数据库。

2 个答案:

答案 0 :(得分:1)

 SELECT id, name, org, slo, dok, 'year 2015' FROM 15_docs
UNION
 SELECT id, name, org, slo, dok, 'year 2016' FROM 16_docs

修改

这肯定适用于MS SQL服务器,没有在postgresql上测试

答案 1 :(得分:1)

你可以使用UNION&在这种情况下,UNION ALL都给出相同的结果,因为UNION子句在结尾处给出了不同的行。 UNION ALL子句组合了两个查询结果的所有行。但在这种情况下,这个' year'必须在每一行中创建唯一性。 试试这个查询!

SELECT 
        id,
        name,
        org,
        slo,
        dok,
        'year_15 ' as year
    FROM 
       15_docs

    UNION ALL

    SELECT 
        id,
        name,
        org,
        slo,
        dok,
        'year_16 ' as year
    FROM 
       16_docs

app.get("/:subject", function (req, res) {
    Subject.find({name: req.params.subject}).populate("courses").exec(function (err, foundSubject) {
        if (err) {
            res.redirect("/")
            console.log(err)
        } else {

            if (err) {
                console.log(err);
            } else {
                console.log(foundSubject[0])
                console.log(foundSubject[0].courses)
                res.render("template.ejs", {subjects: foundSubject[0], courses: foundSubject[0].courses})
            }

        }
    })