1. 程式人生 > >sql 子查詢 踩坑

sql 子查詢 踩坑

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 子查詢 踩坑