1

我有我刚刚在 Postgres 中创建的这三个表:

CREATE TABLE info_clients(id_client INT(pk),name VARCHAR(20), last_name VARCHAR(20));
CREATE TABLE customer_request(id_request INT(pk),client INT(fk),product INT(fk));
CREATE TABLE info_products(id_producto INT(pk),description VARCHAR(20),price INT);

然后我有下一个查询:

显示clientes购买 10 件最昂贵物品的人的 ID(使用子查询):

SELECT id_client FROM info_clients
WHERE id_cliente=(  SELECT client 
                    FROM customer_request 
                    WHERE product=( SELECT id_product 
                                    FROM info_products 
                                    ORDER BY price DESC LIMIT 10
                                  )
                 );

但是我不断得到 message_ 子查询用作返回多个寄存器的表达式,我不知道我在做什么错。

4

1 回答 1

1

@kordirko 评论了什么。
另外,JOIN 在各个方面都比(嵌套的)IN 表达式更快更好。

SELECT i.id_client
FROM  (
   SELECT id_product 
   FROM   info_products 
   ORDER  BY price DESC
   LIMIT  10
   ) p
JOIN   customer_request r ON c.product = p.id_product
JOIN   info_clients     i ON i.id_client = c.client;

还有,错别字?id_cliente<->id_client
更多关于SELECT.

于 2014-04-06T18:32:17.510 回答