辦法如下:
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了東莞免費(fèi)建站歡迎大家使用!
select * from table1 where concat(`字段`,`字段`,`字段` ) like '%關(guān)鍵字%' union
select * from table2 where concat(`字段`,`字段`,`字段` ) like '%關(guān)鍵字%' union
select * from table3 where concat(`字段`,`字段`,`字段` ) like '%關(guān)鍵字%' union
select * from table4 where concat(`字段`,`字段`,`字段` ) like '%關(guān)鍵字%' union
select * from table5 where concat(`字段`,`字段`,`字段` ) like '%關(guān)鍵字%'?
前提是查詢出來的字段個(gè)數(shù)要一樣,類型要對(duì)應(yīng)好,至于如何得到正確且符合你需要的sql就要在程序類中處理了。
最頻繁使用的和重要的聯(lián)接是INNER JOIN。它也被稱為一個(gè)等值連接。
INNER JOIN通過結(jié)合基于聯(lián)接謂詞兩個(gè)表(表1和表2)列值創(chuàng)建一個(gè)新的結(jié)果表。查詢比較表1中的每一行與表2中的每一行,找到所有滿足聯(lián)接謂詞的行。 當(dāng)聯(lián)接謂詞被滿足時(shí),對(duì)于每個(gè)匹配的一對(duì)A和B的列值被組合成一個(gè)結(jié)果行。
INNER JOIN基本語法如下:
SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
select store_id,address from address inner join store on address.address_id=store.address_id;
SQL LEFT JOIN返回所有行左表,即使存在左表中沒有匹配。這意味著,如果在ON子句在右邊的表匹配0(零)個(gè)記錄,則連接將仍然在結(jié)果返回一行,但用NULL顯示在右表中的每一列中。
這意味著,一個(gè)左連接從左表中返回所有值,再加上如果右表沒有匹配就使用NULL值代替返回。
LEFT JOIN的基本語法如下:
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
在這里,給定的條件可能是根據(jù)您的需要任意給定表達(dá)式。
select address,store_id from address left join store on address.address_id=store.address_id limit 20;
SQL RIGHT JOIN返回右表所有行,即使在左表中沒有匹配。這意味著,如果ON子句匹配左表0(零)記錄, 連接仍返回一行結(jié)果,但用NULL代替左表中的每一列。
這意味著,一個(gè)右連接返回右表所有的值,再加上如果沒有匹配左表時(shí)使用NULL值。
RIGHT JOIN的基本語法如下:
SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
示例
select address,store_id from store right join address on address.address_id=store.address_id limit 10;
從這一個(gè)開始,MySQL不提供正式的一步到位的關(guān)鍵字,效果全靠自己模擬。
左連接是得到A表中去除B表內(nèi)容的剩下的部分,也就是A表獨(dú)有的一部分??梢钥醋鍪窃谧笸膺B接的結(jié)果中將雙方共有的部分去掉得到的。
select address,store_id from address left join store on address.address_id=store.address_id where store_id is null limit 10;
同理,右連接是在右外連接的結(jié)果中得到B表獨(dú)有的那一部分
示例
select address,store_id from store right join address on address.address_id=store.address_id where store.store_id is null limit 10;
全連接顧名思義是獲得AB兩表全部的數(shù)據(jù),oracle提供了 full join關(guān)鍵字完成這一功能,但是MySQL沒有。不過MySQL中可以借助union達(dá)到這個(gè)效果,union的作用是合并兩個(gè)查詢的結(jié)果。
兩表的全連接中除去重合的部分,即兩張表分別的特有部分的合集。
用模糊查詢,下述為轉(zhuǎn)載:
SQL模糊查詢的語法為
“SELECT
column
FROM
table
WHERE
column
LIKE
';pattern';”。
SQL提供了四種匹配模式:
1.
%
表示任意0個(gè)或多個(gè)字符。如下語句:
SELECT
*
FROM
user
WHERE
name
LIKE
';%三%';
將會(huì)把name為“張三”,“三腳貓”,“唐三藏”等等有“三”的全找出來;
2.
_
表示任意單個(gè)字符。語句:
SELECT
*
FROM
user
WHERE
name
LIKE
';_三_';
只找出“唐三藏”這樣name為三個(gè)字且中間一個(gè)字是“三”的;
SELECT
*
FROM
user
WHERE
name
LIKE
';三__';
只找出“三腳貓”這樣name為三個(gè)字且第一個(gè)字是“三”的;
3.
[
]
表示括號(hào)內(nèi)所列字符中的一個(gè)(類似與正則表達(dá)式)。語句:
SELECT
*
FROM
user
WHERE
name
LIKE
';[張李王]三';
將找出“張三”、“李三”、“王三”(而不是“張李王三”);
如
[
]
內(nèi)有一系列字符(01234、abcde之類的)則可略寫為“0-4”、“a-e”
SELECT
*
FROM
user
WHERE
name
LIKE
';老[1-9]';
將找出“老1”、“老2”、……、“老9”;
如要找“-”字符請(qǐng)將其放在首位:';張三[-1-9]';
4.
[^
]
表示不在括號(hào)所列之內(nèi)的單個(gè)字符。語句:
SELECT
*
FROM
user
WHERE
name
LIKE
';[^張李王]三';
將找出不姓“張”、“李”、“王”的“趙三”、“孫三”等;
SELECT
*
FROM
user
WHERE
name
LIKE
';老[^1-4]';
將排除“老1”到“老4”尋找“老5”、“老6”、……、“老9”。
!最后是重點(diǎn)!
由于通配符的緣故,導(dǎo)致我們查詢特殊字符“%”、“_”、“[”、“';”的語句無法正常實(shí)現(xiàn),而把特殊字符用“[
]”括起便可正常查詢。據(jù)此我們寫出以下函數(shù):
function
sqlencode(str)
str=replace(str,"';","';';")
str=replace(str,"[","[[]")
';此句一定要在最先
str=replace(str,"_","[_]")
str=replace(str,"%","[%]")
sqlencode=str
end
function