如何在PHP的SELECT语句中执行子查询?

时间:2019-03-18 03:08:53

标签: php mysql postgresql

如何在PHP的SELECT语句中执行子查询?

例如(我知道有一种更好的方式编写此查询,无需指出):

SELECT
  product_name
FROM
  (SELECT * FROM product)

如何在PHP中执行此操作?我尝试了以下查询,但没有成功:

pg_query($conn, 'SELECT product_name FROM SELECT * FROM product')

2 个答案:

答案 0 :(得分:3)

SQL标准和PostgreSQL要求FROM子句中的任何子查询都具有别名,即使该子查询未在查询中使用:

SELECT
   product_name
FROM
   (SELECT * FROM product) AS q

答案 1 :(得分:-1)

根据您的任务目的,您可以创建一个SELECT子查询,但是,我不确定您的意图是什么。在您当前的帖子中,您说的是

SELECT 
    product_name 
FROM 
    SELECT * 
    FROM product

运行该语句时,FROM子句使用不正确,因为该子句可能会大大减少。如果您只是想获得产品,则可以这样说:

SELECT 
    product_name 
FROM 
    product

如果您尝试获取乘积出现在表中的时间,例如乘积不是主键,则可以在SELECT子句中创建子查询,如下所示:

SELECT DISTINCT
    p.product_name
    (
        SELECT 
            COUNT(*) 
        FROM 
            product prodSub 
        WHERE 
            prodSub.product_name == p.product_name
    ) AS "Occurances"
FROM 
    product p

请注意,此查询应能说明问题,而我并未对其进行测试。请测试并验证;如有任何错误,请邮寄至地址。