数据库in的用法

数据库in的用法,第1张

数据库in的用法的用法你知道吗?下面我就跟你们详细介绍下数据库in的用法的用法,希望对你们有用。

数据库in的用法的用法如下:

MySQL IN 语法

IN 运算符用于 WHERE 表达式中,以列表项的形式支持多个选择,语法如下:

WHERE column IN (value1,value2,...)

WHERE column NOT IN (value1,value2,...)

当 IN 前面加上 NOT 运算符时,表示与 IN 相反的意思,即不在这些列表项内选择。

IN 使用实例

选取 uid 为 2、3、5 的用户数据:

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

返回查询结果如下:

uid

username

password

email

regdate

2 小明 a193686a53e4de85ee3f2ff0576adf01 xiao@163.com 1278063917

3 Jack 0193686a35e4de85ee3f2ff0567adf490 jack@gmail.com 1278061380

5 5idev a193686a53e4de85ee3f2ff0576adf01 5idev@5idev.com 1291107029

IN 子查询

更多情况下,IN 列表项的值是不明确的,而可能是通过一个子查询得到的:

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

在这个 SQL 例子里,我们实现了查出所有状态为 0 的用户(可能是被禁止)的所有文章。首先通过一个查询得到所有所有 status=0 的用户:

SELECT uid FROM user WHERE status=0

然后将查询结果作为 IN 的列表项以实现最终的查询结果,注意在子查询中返回的结果必须是一个字段列表项。

IN 运算符补充说明

IN 列表项不仅支持数字,也支持字符甚至时间日期类型等,并且可以将这些不同类型的数据项混合排列而无须跟 column 的类型保持一致:

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

一个 IN 只能对一个字段进行范围比对,如果要指定更多字段,可以使用 AND 或 OR 逻辑运算符:

SELECT * FROM user WHERE uid IN(1,2) OR username IN('admin','5idev')

使用 AND 或 OR 逻辑运算符后,IN 还可以和其他如 LIKE、>=、= 等运算符一起使用。

关于 IN 运算符的效率问题

如果 IN 的列表项是确定的,那么可以用多个 OR 来代替:

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

// 等效为:

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

一般认为,如果是对索引字段进行 *** 作,使用 OR 效率高于 IN,但对于列表项不确定的时候(如需要子查询得到结果),就必须使用 IN 运算符。另外,对于子查询表数据小于主查询的时候,也是适用 IN 运算符的。

1. 子查询方法

select * 

from DB2.table2 

where 字段 in (select table1中相应字段 from DB1.table1 where table1中相应字段=相应值)

 

2. 左连接方法

select table2.* 

from DB2.table2 left join DB1.table1 

on table1.字段 = table2.相应字段 

where table2.相应字段 = 相应值

 

2. 交叉连接方法

select table2.* 

from DB2.table2, DB1.table1 

where table1.字段 = table2.相应字段 and table2.相应字段 = 相应值

这个要用到mysql下的存取过程了,先把下面的那段代码做为了一个批处理文件,命名为:

mysql_bak.bat

具体的 *** 作步骤如下:

1. 将上面的两段代码分别保存为 mysql_bak.bat 并根据注释修改相关参数

确定好目录之后,运行 mysql_bak.bat 将计划任务添加到系统中。

2. Windows Server 2003 / XP 可以通过 开始,控制面板,计划任务进入计划任务管理界面;

Windows Vista / 7 可以通过 计算机,右键,管理,系统工具,任务计划程序,任务计划程序库,进入计划任务管理界面。

3. 手动运行该任务,查看备份目录来确认下备份是否成功。

具体实现在代码:

@echo off &setlocal ENABLEEXTENSIONS

:: ---------- 配置项 ----------

:: 备份放置的路径,加 \

set BACKUP_PATH=D:\Backup\

:: 要备份的数据库名称,多个用空格分隔

set DATABASES=database1 database2 database3

:: MySQL 用户名

set USERNAME=root

:: MySQL 密码

set PASSWORD=123456

:: MySQL Bin 目录,加 \

:: 如果可以直接使用 mysqldump(安装时添加 MySQL Bin 目录到了环境变量),此处留空即可

set MYSQL=D:\SERVER\MySQL\bin\

:: WinRAR 自带命令行工具的可执行文件路径,长文件名注意用 Dos 长文件名书写方式

set WINRAR=C:\Progra~1\WinRAR\Rar.exe

:: ---------- 以下请勿修改 ----------

set YEAR=%date:~0,4%

set MONTH=%date:~5,2%

set DAY=%date:~8,2%

:: 如果在 dos 下输入 time 返回的不是 24 小时制(没有 0 填充),请自行修改此处

set HOUR=%time:~0,2%

set MINUTE=%time:~3,2%

set SECOND=%time:~6,2%

set DIR=%BACKUP_PATH%%YEAR%\%MONTH%\%DAY%\

set ADDON=%YEAR%%MONTH%%DAY%%HOUR%%MINUTE%%SECOND%

:: create dir

if not exist %DIR% (

mkdir %DIR% 2>nul

)

if not exist %DIR% (

echo Backup path: %DIR% not exists, create dir failed.

goto exit

)

cd /d %DIR%

:: backup

echo Start dump databases...

for %%D in (%DATABASES%) do (

echo Dumping database %%D ...

%MYSQL%mysqldump -u%USERNAME% -p%PASSWORD% %%D >%%D.%ADDON%.sql 2>nul

:: winrar

if exist %WINRAR% (

%WINRAR% a -k -r -s -m1 -ep1 %%D.%ADDON%.rar %%D.%ADDON%.sql 2>nul

del /F /S /Q %%D.%ADDON%.sql 2>nul

)

)

echo Done

:exit


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10008112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存