2016-12-26 144 views
-5

親愛的朋友,我無法理解mysql查詢從哪裏。什麼第一次運行mysql查詢

select * from `tablename` where name='123' 

在這個查詢中哪個節運行第一個select或where。 並在where子句中如何從左到右或從右到左運行mysql。

在查詢

"select * from where id='123' and name like 'as%' or name like '% as'" 

所有的ID給予其結果,不僅ID = 123。它的運行如何。

+0

MySQL正在從右向左讀 – brianforan

+0

謝謝您的回答,但如果當我寫一個查詢「SELECT * FROM其中id ='123'和名稱像'as%'或名稱像'%as'「它給所有id的結果,不僅id = 123它顯示所有id – user3666505

+0

其中你問的問題是不同於你的打算問。 – Strawberry

回答

0

該查詢說:

選擇所有從持有一個名爲「示例表」的表中有一個特定的數據庫中的行,其中名稱等於「123」

So, this query will fetch all the rows from the table where it encounters name as "123" 

注意:上述查詢中的名稱是表格中的一列。

希望這有助於

編輯

由於OP修改問題的解釋去爲:

當在查詢,如果LIKE條款與WHERE子句中使用則查詢變得像:

This

"select * from table where id='123' and name like 'as%' or name like '% as'" 

將變爲:

"select * from table where id='123' UNION select * from table where name like 'as%' or name like '% as'" 

這就是爲什麼你得到合併的wherelike

+0

請查看我對上面的評論 – user3666505

+0

重新編輯:你解析錯誤的查詢:)它做了別的。 –

+0

你想提一下錯誤嗎? @SergioTulentsev –

-1

結果在你上面的查詢SELECT語句將首先被執行select * from tablename後病情會被執行Where條款並在Where子句中執行從左至右where name='123'name將該值與name='123'進行比較。

0

您正試圖創建一個結果集 它在3個階段執行:

1. FROM table-name   // Scan all the tuples [rows] in this table 
2. WHERE column-name = '123' // Extract those rows that satisfies some selection criteria, and ignore the rest 
3. SELECT *     // Include ALL the columns in the tuple in the result set [Asterisk is like a wild-card]