кодесурса
«MYSQL

MySQL NOT IN () функция

script1adsense2code
script1adsense3code

Функция NOT IN ()

MySQL NOT IN () гарантирует, что обработанное выражение не имеет значений, присутствующих в аргументах.

Синтаксис:

 expr NOT IN (значение, ...) 

Версия MySQL: 5.6

Пример: функция MySQL NOT IN ()

Пример таблицы: book_mast

 + --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| book_id | book_name | isbn_no | cate_id | aut_id | pub_id | dt_of_pub | pub_lang | no_page | book_price |
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
| BK001 | Введение в электродинамику | 0000979001 | CA001 | AUT001 | P003 | 2001-05-08 | Английский | 201 | 85,00 |
| BK002 | Понимание стальных конструкций | 0000979002 | CA002 | AUT002 | P001 | 2003-07-15 | Английский | 300 | 105,50 |
| BK003 | Руководство по сети | 0000979003 | CA003 | AUT003 | P002 | 2002-09-10 | Хинди | 510 | 200,00 |
| BK004 | Передача тепла и массы | 0000979004 | CA002 | AUT004 | P004 | 2004-02-16 | Английский | 600 | 250,00 |
| BK005 | Концептуальная физика | 0000979005 | CA001 | AUT005 | P006 | 2003-07-16 | NULL | 345 | 145,00 |
| BK006 | Основы жары | 0000979006 | CA001 | AUT006 | P005 | 2003-08-10 | Немецкий | 247 | 112,00 |
| BK007 | Продвинутая 3d графика | 0000979007 | CA003 | AUT007 | P002 | 2004-02-16 | Хинди | 165 | 56,00 |
| BK008 | Анатомия человека | 0000979008 | CA005 | AUT008 | P006 | 2001-05-17 | Немецкий | 88 | 50,50 |
| BK009 | Уход за психическим здоровьем | 0000979009 | CA005 | AUT009 | P007 | 2004-02-10 | Английский | 350 | 145,00 |
| BK010 | Основы термодинамики | 0000979010 | CA002 | AUT010 | P007 | 2002-10-14 | Английский | 400 | 225,00 |
| BK011 | Экспериментальный анализ кошек | 0000979011 | CA004 | AUT011 | P005 | 2007-06-09 | Французский | 225 | 95,00 |
| BK012 | Природа Мира | 0000979012 | CA004 | AUT005 | P008 | 2005-12-20 | Английский | 350 | 88,00 |
| BK013 | Окружающая среда - устойчивое будущее | 0000979013 | CA004 | AUT012 | P001 | 2003-10-27 | Немецкий | 165 | 100,00 |
| BK014 | Концепции в здоровье | 0000979014 | CA005 | AUT013 | P004 | 2001-08-25 | NULL | 320 | 180,00 |
| BK015 | Анатомия и физиология | 0000979015 | CA005 | AUT014 | P008 | 2000-10-10 | Хинди | 225 | 135,00 |
| BK016 | Сети и Телекоммуникации | 00009790_16 | CA003 | AUT015 | P003 | 2002-01-01 | Французский | 95 | 45,00 |
| BK1234 | ASDFASD | ASDF | ASDF | ASDF | P010 | 2001-10-10 | АНГЛИЙСКИЙ | 235 | 234,00 |
+ --------- + ------------------------------------- + - ------------ + --------- + -------- + -------- + --------- --- + ---------- + --------- + ------------ +
17 рядов в наборе (0,03 сек)

Пример таблицы: издатель

 + -------- + ------------------------------ + --------- - + ----------- + ---------------- + -------------- + --- --------- +
| pub_id | pub_name | pub_city | страна | country_office | no_of_branch | есть |
+ -------- + ------------------------------ + --------- - + ----------- + ---------------- + -------------- + --- --------- +
| P001 | Публикация Jex Max | Нью Йорк | США | Нью Йорк | 15 | 1969-12-25 |
| P002 | Публикация БПП | Мумбаи | Индия | Нью-Дели | 10 | 1985-10-01 |
| P003 | Нью Гарролд Публикация | Аделаида | Австралия | Сидней | 6 | 1975-09-05 |
| P004 | Ультра Пресс Инк | Лондон | Великобритания | Лондон | 8 | 1948-07-10 |
| P005 | Горная публикация | Хьюстан | США | Сан Диего | 25 | 1975-01-01 |
| P006 | Летняя ночь Публикация | Нью Йорк | США | Атланта | 10 | 1990-12-10 |
| P007 | Pieterson Grp. издателей | Кембридж | Великобритания | Лондон | 6 | 1950-07-15 |
| P008 | Роман Издатель ООО | Нью-Дели | Индия | Бангалор | 10 | 2000-01-01 |
| P009 | ASDFASD | ASDF | ASD | ASDF | 1 | 0000-00-00 |
+ -------- + ------------------------------ + --------- - + ----------- + ---------------- + -------------- + --- --------- +
9 рядов в наборе (0,04 сек)

Если вы хотите извлечь строки из таблицы book_mast, которые содержат такие книги, не написанные на английском языке, и цена книг не 100 или 200, можно использовать следующее утверждение.

Код:

SELECT book_name,dt_of_pub,pub_lang,no_page,book_price
FROM book_mast      
WHERE pub_lang!="English"   
AND book_price NOT IN (100,200);

Пример вывода:

 + ---------------------------------- + ------------ + - --------- + --------- + ------------ +
| book_name | dt_of_pub | pub_lang | no_page | book_price |
+ ---------------------------------- + ------------ + - --------- + --------- + ------------ +
| Основы жары | 2003-08-10 | Немецкий | 247 | 112,00 |
| Продвинутая 3d графика | 2004-02-16 | Хинди | 165 | 56,00 |
| Анатомия человека | 2001-05-17 | Немецкий | 88 | 50,50 |
| Экспериментальный анализ кошек | 2007-06-09 | Французский | 225 | 95,00 |
| Анатомия и физиология | 2000-10-10 | Хинди | 225 | 135,00 |
| Сети и Телекоммуникации | 2002-01-01 | Французский | 95 | 45,00 |
+ ---------------------------------- + ------------ + - --------- + --------- + ------------ +
6 рядов в наборе (0,00 сек)

PHP скрипт

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>example-not-in - php mysql examples | w3resource</title>
<meta name="description" content="example-not-in - php mysql examples | w3resource">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>List of books which are not written in English as well as priced neither 100 nor 200, along with their country, city and date of establishment:</h2>
<table class='table table-bordered'>
<tr>
<th>Book</th><th>Date of publish</th><th>Language</th><th>Number of pages</th><th>Price</th>
</tr>
<?php
$hostname="your_hostname";
$username="your_username";
$password="your_password";
$db = "your_dbname";
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT book_name,dt_of_pub,pub_lang,no_page,book_price
FROM book_mast
WHERE pub_lang!="English"
AND book_price NOT IN (100,200)') as $row) {
echo "<tr>";
echo "<td>" . $row['book_name'] . "</td>";
echo "<td>" . $row['dt_of_pub'] . "</td>";
echo "<td>" . $row['pub_lang'] . "</td>";
echo "<td>" . $row['no_page'] . "</td>";
echo "<td>" . $row['book_price'] . "</td>";
echo "</tr>";
}
?>
</tbody></table>
</div>
</div>
</div>
</body>
</html>

Посмотреть пример в браузере

JSP скрипт

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>example-not-in</title>
</head>
<body>
<%
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String Host ="jdbc:mysql://localhost:3306/w3resour_bookinfo";
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
connection = DriverManager.getConnection(Host, "root", "datasoft123");
statement = connection.createStatement();
String Data ="SELECT book_name,dt_of_pub,pub_lang,no_page,book_price FROM book_mast WHERE pub_lang!='English' AND book_price NOT IN (100,200)";
rs = statement.executeQuery(Data);
%>
<TABLE border="1">
<tr width="10" bgcolor="#9979">
<td>Book</td>
<td>Date of publish</td>
<td>Language</td>
<td>Number of pages</td>
<td>Price</td>
</tr>
<%
while (rs.next()) {
%>
<TR>
<TD><%=rs.getString("book_name")%></TD>
<TD><%=rs.getString("dt_of_pub")%></TD>
<TD><%=rs.getString("pub_lang")%></TD>
<TD><%=rs.getString("no_page")%></TD>
<TD><%=rs.getString("book_price")%></TD>
</TR>
<%   }    %>
</table>
<%
rs.close();
statement.close();
connection.close();
} catch (Exception ex) {
out.println("Can’t connect to database.");
}
%>
</body>
</html>

пример

Если вы хотите извлечь строки из таблицы book_mast, которые содержат книги, написанные не на английском или немецком языке, можно использовать следующий оператор sql.

Код:

SELECT book_name,dt_of_pub,pub_lang,no_page,book_price
FROM book_mast
WHERE pub_lang NOT IN("English","German");

Пример вывода:

 + ---------------------------------- + ------------ + - --------- + --------- + ------------ +
| book_name | dt_of_pub | pub_lang | no_page | book_price |
+ ---------------------------------- + ------------ + - --------- + --------- + ------------ +
| Руководство по сети | 2002-09-10 | Хинди | 510 | 200,00 |
| Продвинутая 3d графика | 2004-02-16 | Хинди | 165 | 56,00 |
| Экспериментальный анализ кошек | 2007-06-09 | Французский | 225 | 95,00 |
| Анатомия и физиология | 2000-10-10 | Хинди | 225 | 135,00 |
| Сети и Телекоммуникации | 2002-01-01 | Французский | 95 | 45,00 |
+ ---------------------------------- + ------------ + - --------- + --------- + ------------ +
5 рядов в наборе (0,00 сек)

Посмотреть пример в браузере

Пример использования MySQL NOT IN с двумя таблицами

Если вы хотите извлечь те строки из таблицы book_mast, которая не содержит те pub_id , которых нет в таблице издателя , можно использовать следующий sql.

SELECT * FROM book_mast 
WHERE pub_id NOT IN(
SELECT pub_id  FROM publisher);

Пример вывода:

 + --------- + ----------- + --------- + --------- + ------- - + -------- + ------------ + ---------- + --------- + ----- ------- +
| book_id | book_name | isbn_no | cate_id | aut_id | pub_id | dt_of_pub | pub_lang | no_page | book_price |
+ --------- + ----------- + --------- + --------- + ------- - + -------- + ------------ + ---------- + --------- + ----- ------- +
| BK1234 | ASDFASD | ASDF | ASDF | ASDF | P010 | 2001-10-10 | АНГЛИЙСКИЙ | 235 | 234,00 |
+ --------- + ----------- + --------- + --------- + ------- - + -------- + ------------ + ---------- + --------- + ----- ------- +
1 ряд в наборе (0,06 сек)

Слайд-шоу функции сравнения MySQL и операторов

«MySQL

Предыдущий: НЕ РАВНЫЙ ОПЕРАТОР (<>,! =)
Далее: НЕ НРАВИТСЯ

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code