π SNO (σ ProjectName = 'J1' ∧ PartName IN (SELECT PartName FROM Supplies WHERE ProjectName = 'J1') (Supplies)) 修改这段代码使之不报错
时间: 2024-09-29 16:09:38 浏览: 20
作业5:SQL练习2 – INDEX / INSERT / SELECT
看起来您想要修改SQL查询,但提供的上下文似乎与Oracle数据库有关。引用[1]提到的是关于PL/SQL(Oracle的一种过程化编程语言)中字符串和变量的定义,而引用[2]给出了一个PL/SQL程序示例。然而,直接从这些引用中解读SQL语法可能有些困难。
如果您想在SQL查询中避免错误并找到特定条件下的SNO,假设`Supplies`表有`ProjectName`, `PartName`, 和 `SNO`字段,我们可以尝试重构您的部分查询:
原始错误的SQL可能类似于这样(假设`ProjectName`列应为`'J1'`,`PartName`应从子查询中获取):
```sql
π SNO
FROM (SELECT * FROM Supplies WHERE ProjectName = 'J1' AND PartName IN (SELECT PartName FROM Supplies WHERE ProjectName = 'J1'))
```
为了修复这个错误,我们可以在外部查询中只选择`PartName`,并在内部查询中筛选`ProjectName`,这样可以减少子查询的复杂性:
```sql
π SNO
FROM Supplies s1
WHERE s1.ProjectName = 'J1'
AND s1.PartName IN (SELECT PartName FROM Supplies s2 WHERE s2.ProjectName = 'J1')
```
这将返回`ProjectName`为`'J1'`并且`PartName`出现在另一个`ProjectName`也为`'J1'`的`Supplies`记录中的所有`SNO`。
阅读全文