萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL數據庫WHERE查詢in,like子查詢詳解

MySQL數據庫WHERE查詢in,like子查詢詳解

在mysql中select的where子查詢是我們用到最多的了,因為where 後面條件是我們篩選數據一個重要的參數了,下面我來給大家介紹一下where子查詢用法。

我們已經看到SQL SELECT命令來從MySQL表獲取數據。我們可以使用一個條件子句WHERE子句中篩選出來的結果。使用WHERE子句,我們可以指定一個選擇的標准來從表中選擇所需的記錄。

語法:
下面是通用的SQL WHERE子句來獲取數據從MySQL表的SELECT命令的語法:

 代碼如下 復制代碼

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....

可以使用一個或多個以逗號分隔的表,包括各種使用WHERE子句條件。但是WHERE子句的SELECT命令是一個可選部分。

您可以使用WHERE子句指定任何條件。

您可以指定一個以上的條件下使用AND或者OR運算符。

一個WHERE子句中可以使用的分散DELETE或UPDATE的SQL命令指定條件。

就像編程語言中的一樣,如果條件的WHERE子句。該子句用於在MySQL的表的字段值與給定值比較。如果從外部給定值是等於可用字段值在MySQL表,然後返回該行。

這裡是清單的運算符可以使用WHERE子句。

假設字段A有值為10和字段B擁有的值為20:

操作  描述  例子 
=  如果兩個操作數的值等於或檢查,如果是的話,條件為真。  (A = B) is not true. 
!=  如果兩個操作數的值等於或檢查,如果值不相等,則條件為真。  (A != B) is true. 
>  檢查的值,如果左操作數大於右操作數的值,如果是的話,條件為真。  (A > B) is not true. 
<  檢查如果左操作數的值小於右操作數的值,如果是的話,條件為真。  (A < B) is true. 
>=  檢查如果左操作數的值大於或等於右操作數的值,如果是的話,條件為真。  (A >= B) is not true. 
<=  檢查如果左操作數的值小於或等於右操作數的值,如果是的話,條件為真。  (A <= B) is true. 

WHERE子句是非常有用的,當想獲取的選擇表中的行,特別是當你使用MySQL的JOIN。JOIN在另一章中討論。

這是一個常見的做法是使用主鍵查找記錄,使搜索快速。

如果給定的條件不符合任何表中的記錄,那麼查詢不會返回任何行。

從命令提示符獲取數據:
這將使用SQL SELECT命令的WHERE子句,以獲取選擇的數據MySQL表tutorials_tbl

實例:
下面的例子將返回tutorials_tbl表中作者的名字是Sanjay所有記錄:

 代碼如下 復制代碼

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl WHERE tutorial_author='Sanjay';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-21      |
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)

mysql>
除非執行LIKE比較字符串的比較是不區分大小寫的。可以搜索區分大小寫,使用BINARY關鍵字如下。

 代碼如下 復制代碼

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl
          WHERE BINARY tutorial_author='sanjay';
Empty set (0.02 sec)

mysql>


MySQL LIKE子句


語法:
這裡是通用的SQL的SELECT命令的語法與LIKE子句來從MySQL表獲取數據:

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
您可以使用WHERE子句指定任何條件。

您可以使用LIKE子句與WHERE子句一起使用。

您可以使用LIKE子句中的等號的地方。

當LIKE是用來與%符號,那麼它會像一個元字符的搜索。

您可以指定一個以上的條件下使用AND或者OR運算符

一個WHERE ... LIKE子句中可以使用的分散DELETE或UPDATE的SQL命令,也可以指定一個條件。

使用LIKE子句在命令提示符下:
這將使用SQL SELECT命令的WHERE ... LIKE子句獲取選定從MySQL表tutorials_tbl的數據

例子:
下面的例子將返回tutorials_tbl表作者姓名以jay結尾所有記錄:

 代碼如下 復制代碼

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl
    -> WHERE tutorial_author LIKE '%jay';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-21      |
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)

mysql>

PHP腳本中使用LIKE子句:
可以使用類似的語法的WHERE...LIKE子句到PHP函數mysql_query()。這個函數是用來執行SQL命令後,另一個PHP函數mysql_fetch_array()可以用來獲取所有的數據,如果WHERE... LIKE子句的SELECT命令用來與。

但是,如果WHERE... LIKE子句正在使用DELETE或UPDATE命令,沒有進一步的PHP函數調用是必需的。

例子:
下面的例子將返回tutorials_tbl表作者姓名以jay結尾所有記錄:

 代碼如下 復制代碼

<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title,
               tutorial_author, submission_date
        FROM tutorials_tbl
        WHERE tutorial_author LIKE "%jay%"';
//
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
}
echo "Fetched data successfullyn";
mysql_close($conn);
?>

mysql中 where in 用法詳解 .

這裡分兩種情況來介紹

1、in 後面是記錄集,如:

 代碼如下 復制代碼

select  *  from  table  where   uname  in(select  uname  from  user);

 

2、in 後面是字符串,如:

 代碼如下 復制代碼

select  *  from  table  where   uname  in('aaa',bbb','ccc','ddd','eee',ffff'');

注意:這裡一定要將字符串用單引號'' 標注起來;

 

3、in 後面是數組,用如下方法,請參考:

 代碼如下 復制代碼

//$pieces是含數據的數組

for($i=0;$i<count($pieces);$i++){

$uname=$uname."'".$pieces[$i]."',";

}

$the_uname ="uname in(".$uname."'')";

select  *  from  table  where    ".$the_uname." ;

備注:這種方法的原理其實很簡單,二就是把數組編程上面“第2種情況”的形式

copyright © 萬盛學電腦網 all rights reserved