Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中的SELECT语句中执行子查询?_Php_Mysql_Postgresql - Fatal编程技术网

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

如何在PHP中的SELECT语句中执行子查询?,php,mysql,postgresql,Php,Mysql,Postgresql,如何在PHP中的SELECT语句中执行子查询 例如(我知道有一种更好的方法来编写此查询,无需指出): 在PHP中如何实现这一点?我尝试了以下查询,但不起作用: pg_query($conn, 'SELECT product_name FROM SELECT * FROM product') SQL标准和PostgreSQL要求FROM子句中的任何子查询都有别名,即使该子查询未在查询中使用: SELECT product_name FROM (SELECT * FROM produc

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

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

在PHP中如何实现这一点?我尝试了以下查询,但不起作用:

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

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

SELECT
   product_name
FROM
   (SELECT * FROM product) AS q

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

SELECT
   product_name
FROM
   (SELECT * FROM product) AS q

根据任务的目的,您可以创建一个
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

请注意,这个查询应该给出这个想法,我没有测试它。请验证;如果有任何错误,请发送到地址。

根据任务的目的,您可以创建一个
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

请注意,这个查询应该给出这个想法,我没有测试它。请验证;如果有任何错误,请发到地址。

Gosh!成功了。谢谢。我在谷歌上找不到答案。如果你不介意我问的话,还有一个问题。您能够在PHP中执行包含WITH子句的查询吗?确保任何有效的SQL语句都是可能的。天哪!成功了。谢谢。我在谷歌上找不到答案。如果你不介意我问的话,还有一个问题。您能够在PHP中执行包含WITH子句的查询吗?确保任何有效的SQL语句都是可能的。您的第一个语句是非法SQL。在
SELECT
列表中使用子查询通常是一个性能杀手(至少在PostgreSQL中,您的联接方法比嵌套循环更有效),因为它只能用嵌套循环处理。@LaurenzAlbe,我的第一句话是注意问题中的问题您的第一句话是非法SQL。在
SELECT
列表中使用子查询通常是一个性能杀手(至少在PostgreSQL中,连接方法比嵌套循环更有效),因为它只能用嵌套循环处理。@LaurenzAlbe,我的第一句话是记下问题中的问题