Sql 在两个表之一中查找记录
在PostgreSQL 8.4.8数据库中,我有两个表:noreset和track 它们具有完全相同的列名,并且包含由唯一的id标识的记录 记录只能出现在其中一个表中,例如: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 |
# 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)