sql 子查詢 踩坑
阿新 • • 發佈:2019-03-16
mil user 題解 數據 等等 單獨 語句 事情 acc
某個月黑風高的夜,手機的嗡嗡聲提示收到一條短信,半睡半醒間打開手機查看,一條日誌告警的信息使我睡意全無。
掀被、起床、喚醒電腦,開始了一個程序員的填坑日常。
有一個sql:
select * from sms_sp_info where user_id = (select user_id from app_user_info where account_name=‘13866666666‘ )
sql中 user_id 字段 在app_user_info 表 並不存在。
此時單獨子查詢
select user_id from app_user_info where account_name=‘13866666666‘
報錯
但是整條查詢語句會查詢出sms_sp_info所有數據,
原因:
子查詢中並沒有指定user_id 是app_user_info中的字段,所以整條sql執行,子查詢user_id會獲取父語句中的user_id字段。整條sql變成 select * from sms_sp_info where user_id = user_id ,獲取所有sms_sp_info信息。
優化sql 後
select * from sms_sp_info sp
where sp.user_id = (select app.user_id from app_user_info app where app.account_name=‘13866666666‘)
這樣sql就會正常提示app_user_info中查找不到 user_id 。
問題解決.....
休眠電腦,上床,sleep ..[ 等等,好像忘了什麽事情?-- 果然,蓋被子這件事情,還是需要自己來 _ . z Z ]
sql 子查詢 踩坑