你朋友的逻辑有问题。
尽管 SQL 及其各种实现在某种程度上基于关系模型,但它缺少许多基本关系运算符的关键字或速记,特别是半连接、半差异(又名反连接)和除法。我经常使用子查询在 SQL 代码中编写半连接和半差异;至于除法,我不确定是否可以在不使用子查询的情况下在单个查询中执行!
所以我对子查询的使用是由 SQL 语言的可疑设计决定的,而不是我使用的数据库的设计。
ps 我想知道您和/或您的朋友是否使用术语“数据库”来表示数据库(数据集合)和 DBMS(管理数据的软件系统)。如果是这样并且在上下文中您指的是 DBMS,那么“当查询有很多子查询时,DBMS 有设计缺陷是一种‘气味’”这句话可能确实是正确的。