php - 从两个不同的表中选择两列,每列具有不同的列名

标签 php sql postgresql

我无法理解这个查询。我正在使用 PHP 和 postgresql 9.1。我希望能够像这样根据另一个字段中的条件从行中选择字段。

A 有列:

vid, title, description, col4, col5, col6, col7

B 有列:

pid, title, description, colx, coly

我想从两个表中搜索 titledescription,如果找到匹配项,则返回 vidpid 所在行的代码。

到目前为止我尝试了什么:

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/

相关文章:

mysql - 未找到 SQL 完整性约束父键

php - Magento 购物车总计汇总

sql - PostgreSQL group by 没有聚合函数。为什么它有效?

生成格式错误的 XML 提要的 PHP DOM 文档

sql - 检查日期是否是圣诞节或元旦的函数

postgresql - 液碱 : unterminated dollar-quoted string at or near $BODY$

sql - 带有 UUID 的 PostgreSQL 中的变量

java - 创建条件语句,一次查询得到结果和行数

php - 在 $_POST 变量中使用 $row 变量进行 MYSQL 查询

c# - 允许字母、数字、小数、空格和下划线的正则表达式模式