Home > Database > Mysql Tutorial > body text

What is the usage of in in mysql

WBOY
Release: 2021-12-21 17:35:14
Original
16819 people have browsed it

In mysql, in is used with the where expression to query data within a certain range. The syntax is "select * from where field in (value)" or "select * from where field not in (value) ".

What is the usage of in in mysql

The operating environment of this tutorial: windows10 system, mysql8.0.22 version, Dell G3 computer.

What is the usage of in in mysql

1. Basic usage

in in mysql is often used in where expressions , its function is to query data within a certain range.

select * from where field in (value1,value2,value3,…)
Copy after login

When IN is preceded by the NOT operator, it means the opposite meaning to IN, that is, not to select within these list items

select * from where field not in (value1,value2,value3,…)
Copy after login

2. IN subquery

Update In many cases, the value of the IN list item is ambiguous and may be obtained through a subquery:

SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)
Copy after login

In this SQL example, we have implemented the function of finding all users whose status is 0 (possibly are prohibited) all articles. First, get all users with status=0 through a query:

SELECT uid FROM user WHERE status=0
Copy after login

Then use the query result as a list item of IN to achieve the final query result. Note that the result returned in the subquery must be a field list item .

In the in subquery, we often encounter the problem of low query efficiency. The solution is as follows:

1. Still use the in subquery and query one more time

SELECT * FROM basic_zdjbxx WHERE suiji IN ( SELECT zdcode FROM ( SELECT zdcode FROM basic_h WHERE zdcode != "" ) AS h )
Copy after login

2. Use LEFT JOIN

SELECT zd.* FROM ( SELECT DISTINCT zdcode FROM basic_h WHERE zdcode != "" ) AS h LEFT JOIN basic_zdjbxx zd ON zd.suiji = h.zdcode
Copy after login

3. Supplementary instructions for IN operator

IN list items not only support numbers, but also characters and even time and date types, and can be These different types of data items are mixed and arranged without being consistent with the column type:

SELECT * FROM user WHERE uid IN(1,2,'3','c')
Copy after login

An IN can only perform range comparison on one field. If you want to specify more fields, you can use AND or OR logical operations. Operator:

  SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','manong')
Copy after login

After using AND or OR logical operators, IN can also be used with other operators such as LIKE, >=, =, etc.

4. Regarding the efficiency of the IN operator

If the list items of IN are certain, multiple ORs can be used instead:

SELECT * FROM user WHERE uid IN (2,3,5)
Copy after login

// Equivalent is:

SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)
Copy after login

Generally believed:

1. If the index field is operated, the efficiency of using OR is higher than IN, but when the list items are uncertain (such as subquery is required to obtain the results ), you must use the IN operator. In addition, when the subquery table data is smaller than the main query, the IN operator is also applicable.

2. When in or or does not add an index to the field, the more fields are connected (1 or 2 or 3 or 4 or...), the query efficiency of or is much lower than that of in.

[Related recommendations: mysql video tutorial]

The above is the detailed content of What is the usage of in in mysql. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template