今天去面試遇到了乙個問題,左連線查詢的問題

2021-07-22 15:29:55 字數 1666 閱讀 2230

問:(左(外)連線)左連線查詢主資料一定能查詢到資料嗎?

答:一定能?

答案是錯誤的,現在想想好傻,如果一定能查詢到資料,連表查詢條件有什麼作用呢?

以下有兩張表做了測試:

user 表,裡面有兩條資料,

活動表action,裡面有一條資料:

select 

*,action.`id` as action_id

from

`users` left join action on users.`id`=action.`id`

limit 0, 1000 ;

能查到資料,儘管action 的資料為空:

加上使用者表的id=3,action是沒有改條資料的,也是能查詢到資料:

如果把action.`id`=2作為條件,儘管action能查詢到資料可是users主表沒有資料,所以無法查詢到資料:

綜上:我們可以得到:

1、如果主表作為條件【或者沒有條件】有資料並且被連線表不作為條件,不管被連線是否有資料都能查詢到有資料。

2、如果被連線表作為查詢條件能查詢該錶資料(無法查詢資料),如果主表無法查詢到資料的話,則不會查詢到資料。

話外:

如果是right  join(右(外)連線) 的話!結果相反。

select

*,action.`id` as action_id

from

`users` right join action on users.`id`=action.`id`

limit 0, 1000 ;)

如果是inner join(等值連線)的話!需要兩個條件都成立才能查詢到資料

select 

*,action.`id` as action_id

from

`users`

inner join action

on users.`id` = action.`id`

limit 0, 1000 ;

今天用solrj遇到了乙個問題,關於日期的

從solrdocument.get item signingdate 取出值 這個是時間型別,但是用util date sql。date 都無法轉成date型別,這樣就需要轉成string 這樣用到了 dateformat format new dateformat eee mmm dd hh mm...

今天遇到乙個亂碼問題

用ecplise自動生成的servlet,會自動帶有這麼一句話 他被放在了 request.setcharacterencoding utf 8 response.setcharacterencoding utf 8 的前面,然後 的時候 request.getrequestdispatcher i...

今天遇到乙個奇怪的問題

想實現乙個使用者訪問頁面,得到使用者的外網位址 在公司上。程式是沒問題。正常獲取使用者的位址 測試 哪位遇到這樣的問題過。如下 string ip request.getheader x forwarded for if ip null ip.length 0 unknown equalsignor...