子查詢:一個(gè)查詢嵌套在另一個(gè)查詢當(dāng)中;又叫內(nèi)部查詢。
子查詢 可以分為: 單行單列(就是一個(gè)值) 單行多列(就是有一行,這一行有很多不同列數(shù)據(jù)) 多行單列(同一列不同的數(shù)據(jù)) 多行多列(可以說就是一張表了吧)
我們先來看單行單列的子查詢:
SELECT * FROM table1 WHERE id = (SELECT id FROM table2 LIMIT 1)我們首先看前面,查詢table1表數(shù)據(jù),但是where后面條件為id應(yīng)該等于SELECT id FROM table2 LIMIT 1 這一條數(shù)據(jù)的查詢結(jié)果,這條數(shù)據(jù)就是返回一個(gè)id值,返回單行單列的id值,如果這個(gè)id等于1,那么就返回table1中id等于1的那一行數(shù)據(jù)。
我們先來看單行多列的子查詢:
SELECT * FROM table1 WHERE (name1,age1) = (SELECT name1,age1 FROM table2 WHERE id=1)以上sql命令。我們查詢table1表數(shù)據(jù),但是條件為name1和age1必須要等于
SELECT name1,age1 FROM table2 WHERE id=1所查詢出來的值,這一句所查詢出來的值是一行多列,因?yàn)橛衝ame1和age1所以就是多列了,因?yàn)閕d為主鍵 ,所以就是一行了 ,如果查詢出來 的數(shù)據(jù) 和之前table1中的name1和age1都沒有匹配的話,那么整個(gè)子查詢查詢出來的值都將為空。 如果有則會(huì)查詢出來。
多行單列子查詢:
SELECT * FROM table1 WHERE id IN(SELECT id FROM table2 )以上sql命令查詢table1的數(shù)據(jù),條件為id必須在
SELECT id FROM table2所查詢到的所有數(shù)據(jù)中的其中之一。所 查詢尋出來的是多行一列的數(shù)據(jù)。
多行多列子查詢:
SELECT * FROM table1 WHERE (name1,age1) IN (SELECT name1,age1 FROM table2)以上命令查詢來自table1表的數(shù)據(jù),但是條件為,table1表中的name1和age1兩個(gè)值必須在
SELECT name1,age1 FROM table2所查詢出來的數(shù)據(jù)中有匹配。
新聞熱點(diǎn)
疑難解答
圖片精選