我无法理解这个查询。我正在使用 PHP 和 postgresql 9.1。我希望能够像这样根据另一个字段中的条件从行中选择字段。
表 A
有列:
vid, title, description, col4, col5, col6, col7
表 B
有列:
pid, title, description, colx, coly
我想从两个表中搜索 title
和 description
,如果找到匹配项,则返回 vid
或 pid
所在行的代码。
到目前为止我尝试了什么:
SELECT vid FROM tableA WHERE title LIKE %somevalue%
UNION
SELECT pid FROM tableB WHERE title LIKE %somevalue%
问题是当我这样做时,它找到了 tableB
的匹配项,它返回正确的值但分配给数组中的 vid
列。
php数组显示
Array ( [0] => Array ( [vid] => 100007 ) )
应该是什么时候
Array ( [0] => Array ( [pid] => 100007 ) )
它没有给我表格的正确列名。它只给我第一个 select 语句的列名。
此外,它只返回一个或另一个。如果在两列中都找到了值,我希望两列都有这两个值。
最佳答案
SELECT
a.vid,
b.pid
FROM (
SELECT vid, ROW_NUMBER() OVER (ORDER BY vid) AS rn
FROM tableA
WHERE title LIKE '%somevalue%'
) a
FULL JOIN (
SELECT pid, ROW_NUMBER() OVER (ORDER BY pid) AS rn
FROM tableB
WHERE title LIKE '%somevalue%'
) b
ON a.rn = b.rn
关于php - 从两个不同的表中选择两列,每列具有不同的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9627306/