我编写了与子查询和自联接相同的查询。
这里有一个明显的论据吗?
子查询:
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/