Sql 在两个表之一中查找记录

Sql 在两个表之一中查找记录,sql,postgresql,outer-join,join,Sql,Postgresql,Outer Join,Join,在PostgreSQL 8.4.8数据库中,我有两个表:noreset和track 它们具有完全相同的列名,并且包含由唯一的id标识的记录 记录只能出现在其中一个表中,例如: # select qdatetime, id, beta_prog, emailid, formfactor from noreset where id='20110922124020305'; qdatetime | id | beta_prog |

在PostgreSQL 8.4.8数据库中,我有两个表:noresettrack

它们具有完全相同的列名,并且包含由唯一的id标识的记录

记录只能出现在其中一个表中,例如:

# select qdatetime, id, beta_prog, emailid, formfactor 
    from noreset where id='20110922124020305';
      qdatetime      |        id         | beta_prog |     emailid      | formfactor
---------------------+-------------------+-----------+------------------+------------
 2011-09-22 11:39:24 | 20110922124020305 | unknown   | 4bfa32689adf8189 | 21
(1 row)

# select qdatetime, id, beta_prog, emailid, formfactor
    from track where id='20110922124020305';
 qdatetime | id | beta_prog | emailid | formfactor
-----------+----+-----------+---------+------------
(0 rows)
我试图提出一个join语句,它将在两个表中的一个表中查找id为的记录。背景是我有一个PHP脚本,它总是使用1个表,但现在突然要求我在两个表中搜索


这能做到吗?这是一辆汽车吗?我不知道如何在我的SQL查询中指定列名(即,我必须预先添加一个表id,但是哪一个?)。

您应该使用
union

select qdatetime, id, beta_prog, emailid, formfactor, 'noreset' as tableOrigin
    from noreset where id='20110922124020305'
union
select qdatetime, id, beta_prog, emailid, formfactor, 'track' as tableOrigin
    from track where id='20110922124020305'
union
删除重复行,如果您想全部使用
union all

如果您打算经常使用此功能,最好创建一个视图:

CREATE VIEW yourviewname as 
select qdatetime, id, beta_prog, emailid, formfactor, 'noreset' as tableOrigin
    from noreset
union
select qdatetime, id, beta_prog, emailid, formfactor, 'track' as tableOrigin
    from track
然后您的查询将是:

SELECT qdatetime, id, beta_prog, emailid, formfactor
  FROM yourviewname
 WHERE id='20110922124020305'

您应该使用
联合

select qdatetime, id, beta_prog, emailid, formfactor, 'noreset' as tableOrigin
    from noreset where id='20110922124020305'
union
select qdatetime, id, beta_prog, emailid, formfactor, 'track' as tableOrigin
    from track where id='20110922124020305'
union
删除重复行,如果您想全部使用
union all

如果您打算经常使用此功能,最好创建一个视图:

CREATE VIEW yourviewname as 
select qdatetime, id, beta_prog, emailid, formfactor, 'noreset' as tableOrigin
    from noreset
union
select qdatetime, id, beta_prog, emailid, formfactor, 'track' as tableOrigin
    from track
然后您的查询将是:

SELECT qdatetime, id, beta_prog, emailid, formfactor
  FROM yourviewname
 WHERE id='20110922124020305'

是否有办法查看记录来自哪个表?只需添加一个新列,并将文字“tablename”作为originTable。(我已经用这个编辑了anwser)有没有办法查看记录来自哪个表?只需添加一个新列,并将文字“tablename”作为originTable。(我已经用这个编辑了anwser)