我有一个名为 INVOICES 的表。我想选择缺少特定费用代码的所有发票编号。我恳请您帮助我解决这个问题。我只需要这样的东西:
Select * from Invoices where (Invoices.chargecode="FREIGHT" is not present)
一张发票可以有很多收费行,但我只需要知道用户忘记收取“运费”的所有发票,这是不可能发生的。
非常感谢。保罗
我有一个名为 INVOICES 的表。我想选择缺少特定费用代码的所有发票编号。我恳请您帮助我解决这个问题。我只需要这样的东西:
Select * from Invoices where (Invoices.chargecode="FREIGHT" is not present)
一张发票可以有很多收费行,但我只需要知道用户忘记收取“运费”的所有发票,这是不可能发生的。
非常感谢。保罗
假设我有一个表student
和一个exam
跟踪学生参加的所有考试的表,我如何找到所有通过或未参加任何类似于白名单的考试的学生?在此示例中,这意味着学生 1 和 2。
PS:pass
flagU
表示状态未知,active
flagN
表示考试已被删除,其余的标志是不言自明的。
说清楚一点,真正的用例其实是assessments
,我需要找出没有pending
评估的人可以参与,这样他们才能进行下一组程序。其他人则需要完成待处理的项目。
+-------------+------+
| student_idn | name |
+-------------+------+
| 1 | Mark |
| 2 | Jack |
| 3 | Jane |
| 4 | Jill |
+-------------+------+
+----------+-------------+------+--------+
| exam_idn | student_idn | pass | active |
+----------+-------------+------+--------+
| 1 | 1 | Y | Y |
| 2 | 1 | Y | Y |
| 3 | 1 | Y | Y |
| 4 | 2 | Y | Y |
| 5 | 2 | N | N |
| 6 | 3 | Y | Y |
| 7 | 3 | Y | Y |
| 8 | 3 | Y | Y |
| 9 | 3 | N | Y |
| 10 | 4 | U | Y |
+----------+-------------+------+--------+
我想出了下面的查询,但有没有更好的方法来做到这一点?我觉得这是 O(n) 或 O(nlogn) 取决于索引等不确定(任何人都知道最好的可能)因此应该接近最优?
SELECT
*
FROM student
WHERE NOT EXISTS (SELECT
*
FROM exam
WHERE exam.student_idn = student.student_idn
AND pass <> 'Y'
AND active = 'Y')
假设我有以下架构和数据:
create table images(
id int not null
);
insert into images values(1), (2), (3), (4), (6), (8);
我想执行如下查询:
select id from images where id not exists in(4, 5, 6);
但这不起作用。上面的情况应该返回5
,因为它不存在于表记录中。