在mysql中select的where子查詢是我們用到最多的了,因為where 后面條件是我們篩選數(shù)據(jù)一個重要的參數(shù)了,下面我來給大家介紹一下where子查詢用法。
我們已經(jīng)看到SQL SELECT命令來從MySQL表獲取數(shù)據(jù)。我們可以使用一個條件子句WHERE子句中篩選出來的結(jié)果。使用WHERE子句,我們可以指定一個選擇的標(biāo)準(zhǔn)來從表中選擇所需的記錄。
語法,下面是通用的SQL WHERE子句來獲取數(shù)據(jù)從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子句,假設(shè)字段A有值為10和字段B擁有的值為20:
操作 描述 例子
= 如果兩個操作數(shù)的值等于或檢查,如果是的話,條件為真。 (A = B) is not true.
!= 如果兩個操作數(shù)的值等于或檢查,如果值不相等,則條件為真。 (A != B) is true.
> 檢查的值,如果左操作數(shù)大于右操作數(shù)的值,如果是的話,條件為真。 (A > B) is not true.
< 檢查如果左操作數(shù)的值小于右操作數(shù)的值,如果是的話,條件為真.(A < B) is true.
>= 檢查如果左操作數(shù)的值大于或等于右操作數(shù)的值,如果是的話,條件為真.(A >= B) is not true.
<= 檢查如果左操作數(shù)的值小于或等于右操作數(shù)的值,如果是的話,條件為真.(A <= B) is true.
WHERE子句是非常有用的,當(dāng)想獲取的選擇表中的行,特別是當(dāng)你使用MySQL的JOIN,JOIN在另一章中討論.
這是一個常見的做法是使用主鍵查找記錄,使搜索快速,如果給定的條件不符合任何表中的記錄,那么查詢不會返回任何行,從命令提示符獲取數(shù)據(jù),這將使用SQL SELECT命令的WHERE子句,以獲取選擇的數(shù)據(jù)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)--Vevb.com
- mysql>
除非執(zhí)行LIKE比較字符串的比較是不區(qū)分大小寫的,可以搜索區(qū)分大小寫,使用BINARY關(guān)鍵字如下,代碼如下:
- 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表獲取數(shù)據(jù):
SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
您可以使用WHERE子句指定任何條件,您可以使用LIKE子句與WHERE子句一起使用,您可以使用LIKE子句中的等號的地方,當(dāng)LIKE是用來與%符號,那么它會像一個元字符的搜索,您可以指定一個以上的條件下使用AND或者OR運算符.
一個WHERE ... LIKE子句中可以使用的分散DELETE或UPDATE的SQL命令,也可以指定一個條件.
使用LIKE子句在命令提示符下:
這將使用SQL SELECT命令的WHERE ... LIKE子句獲取選定從MySQL表tutorials_tbl的數(shù)據(jù).
例子,下面的例子將返回tutorials_tbl表作者姓名以jay結(jié)尾所有記錄,代碼如下:
- 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函數(shù)mysql_query(),這個函數(shù)是用來執(zhí)行SQL命令后,另一個PHP函數(shù)mysql_fetch_array()可以用來獲取所有的數(shù)據(jù),如果WHERE... LIKE子句的SELECT命令用來與.
但是,如果WHERE... LIKE子句正在使用DELETE或UPDATE命令,沒有進(jìn)一步的PHP函數(shù)調(diào)用是必需的.
例子,下面的例子將返回tutorials_tbl表作者姓名以jay結(jié)尾所有記錄,代碼如下:
- <?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'');
注意:這里一定要將字符串用單引號'' 標(biāo)注起來.
3、in 后面是數(shù)組,用如下方法,請參考如下代碼:
- //$pieces是含數(shù)據(jù)的數(shù)組
- for($i=0;$i<count($pieces);$i++){
- $uname=$uname."'".$pieces[$i]."',";
- }
- $the_uname ="uname in(".$uname."'')";
- select * from table where ".$the_uname." ;
備注:這種方法的原理其實很簡單,二就是把數(shù)組編程上面“第2種情況”的形式.
新聞熱點
疑難解答
圖片精選