sql - 这些查询中的哪一个更可取?

标签 sql

我编写了与子查询和自联接相同的查询。

这里有一个明显的论据吗?

子查询:

SELECT prod_id, prod_name
FROM products
WHERE vend_id = (SELECT vend_id
FROM products
WHERE prod_id = ‘DTNTR’);

自联接:
SELECT p1.prod_id, p1.prod_name
FROM products p1, products p2
WHERE p1.vend_id = p2.vend_id
AND p2.prod_id = ‘DTNTR’;

最佳答案

如果子查询返回多个值,则第一个查询可能会抛出错误

第二个查询不符合 ANSI

所以最好使用ANSI风格的join

SELECT p1.prod_id, p1.prod_name 
FROM products as p1 inner join products as p2 
on p1.vend_id = p2.vend_id 
WHERE p2.prod_id = ‘DTNTR’; 

关于sql - 这些查询中的哪一个更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3004201/

相关文章:

sql - MySQL "Sending data"非常慢

sql - PostgreSQL 11.2 按单个表中的公共(public)属性对对象进行分组

mysql - 如何使用任意列和行扩展 SQL 结果集?

mysql - 如何使用 where 子句进行 UPSERT

php - 最近几个小时的sql记录

php - Magento $collection->join - 多个

sql - postgres如何重置或更新表的索引(序列)

mysql - 在 Rails 应用程序上为访问者提供 SQL 查询访问

sql - 在 SQL 中组合连续行中特定列的值

mysql - 如何计算不同行的数据