PostgreSQL - 从2个不同的表到2列的2个SELECT语句?

时间:2012-03-09 16:15:40

标签: php sql postgresql

昨天我问了一个类似的问题,但输出上仍有一点问题。工会只会将它组合成一列,并且与连接无关。这就是我想要的。我不想合并。

SELECT prd_id FROM products WHERE title LIKE %$var%;

AND

SELECT lst_id FROM lists WHERE title LIKE %$var%;

我想在一个查询中同时使用这两个,并将它找到的结果输出到2列中,如果有任何一个结果。我也想在最后使用LIMIT。

因此,例如,如果两个表都有一个与标题匹配的项,那么它将返回类似的内容。请注意,值将是每个表中匹配的值。这一点只是在2列中,而不是像Unions输出那样。

+-----------------+  
| prd_id | lst_id |   
+-----------------+   
|  value | value  |   
+-----------------+   

我接近但不能完全正确。

为清楚起见,PHP print_r输出应该是这样的。此示例是仅在列表表中匹配2个项目

Array ( [0] => Array ( [lst_id] => 100007 ) [1] => Array ( [lst_id] => 100008 ))

此示例是每个表中的1个项目是否匹配

Array ( [0] => Array ( [prd_id] => 100006 ) [1] => Array ( [lst_id] => 100008 ))

任何一个表都可以有任意数量的匹配。

1 个答案:

答案 0 :(得分:1)

最简单的答案是将结果合并到不同的列中,如下所示:

SELECT prd_id, 0 lst_id FROM products WHERE title LIKE %$var%
UNION ALL
SELECT 0 prd_id, lst_id FROM lists WHERE title LIKE %$var%;