【发布时间】:2019-11-22 15:57:13
【问题描述】:
我在编写查询时犯了一个错误,我试图理解为什么这个查询甚至会运行。这是查询:
select * from user
where user_id in (select user_id from admin);
在此查询中,admin 表中没有字段user_id,但查询仍在运行,最终返回意外结果。在user 表中有一个user_id。
当我将字段更改为主表中不存在的内容时,查询不会运行。
select * from user
where user_id in (select test_id from admin);
我也尝试用一个不存在的表来运行它,它也没有运行。
select * from user
where user_id in (select user_id from blah);
有人能解释一下为什么第一个查询有效吗?有没有更好的方法来编写这些更容易发现错误的查询?
【问题讨论】:
-
"有没有更好的方法来编写这些查询" - 是的,总是在列名前加上表别名