mysql> select id,mr_id,type from oh_mr_ocr_sub_info where mr_id in
(select mr_id from oh_mr_base_info) limit 2;
+----+-------+--------------+
| id | mr_id | type |
+----+-------+--------------+
| 2 | 7 | inhospital |
| 3 | 7 | chemotherapy |
+----+-------+--------------+
2 rows in set (0.01 sec)
mysql> select mr_id from oh_mr_base_info;
ERROR 1054 (42S22): Unknown column 'mr_id' in 'field list'
oh_mr_base_info
不包含字段mr_id
;
但返回所有oh_mr_ocr_sub_info
数据吗?为什么?
答案 0 :(得分:0)
SQL可以这样运行:)
如果为表赋予别名,您将看到该查询将不再起作用
select a1.id,
a1.mr_id,
a1.type
from oh_mr_ocr_sub_info a1
where a1.mr_id in (select b1.mr_id
from oh_mr_base_info b1)
limit 2;
以上内容会给您一个错误,指出b1.mr_id是无效的列。但是,如果您编写a1.mr_id,它将可以正常工作。
它与表别名不完全相关,但与表列有关。它看到mr_id不需要存在于B1中,它也可以存在于a1中。与选择常量
相同select 111 from oh_mr_base_info;
只要oh_mr_base_info中有任何数量的记录,查询将返回111。始终建议对此类问题使用表别名