MySQL数据库如何实现多字段过滤

MySQL数据库如何实现多字段过滤,第1张

1、可以使用OR或AND来实现多字段过滤

比如 表A找那个有F1和F2两个字段

select * from A where F1 = ‘AB’OR F1 = ‘CD’

如果是正向查询就用OR如果是反向查询就用AND

2、可以使用IN语句也可以

比如 表A中有F1和F2两个字段

select * from A where F1 IN(‘AB’,‘CD’);

这个语句就是查询表A中F1字段数值是AB和CD的数据。

实现的方法有很多,上面只是两种比较简单些的,希望能帮助到你

使用 binlog-do-db=db_name。使用这个选项后,主服务器会判断当前的数据库(即USE选定的数据库)是否是db_name,如果是,则会将更新记录到二进制日志中。在使用之后,其它所有没有明显指定的数据库 都会被忽略。如果使用该选项,你应确保只对当前的数据库进行更新。

在我服务器上有两个数据库,一个db_factory,另一个是db_user。在没有使用这个选项之前,对两个数据库的更新 *** 作都是立即会复制到从库上的,但设置

www.2cto.com

[sql]

binlog-do-db=db_factory

之后,对db_user的改动,都不会被从库所复制。所以如果不是特别有需求,最好不要设置这个选项。当然如果是一个数据库经常更新,其它的都是一样的本地数据库,可以不用于二进制日志的后续 *** 作的情况下,作为一种优化手段,也是可以的。

一个需要特别注意的地方是,如果设置binlog-do-db=db_factory。但后续使用如下语句:

[sql]

use db_user

insert into db_factory.employ ...........

此时,更新是不会被二进制日志所接收的。

二,binlog-ignore-db

表示忽略某个特定的数据库,而对其它数据库进行复制的选项。其实上面的选项是表示“忽略其他数据库,只记录我进入日志”,而这个选项可以表“忽略我,将其它数据库记录日志”,对这外选项的使用,可以如下所示:

www.2cto.com

[sql]

[mysqld]

binlog-ignore-db=db_factory

binlog-ignore-db=db_user

当然上面的binlog-do-db也可以使用多次记录多个表需要被写入二进制日志。

我试了一下发现show 其他的可以使用like进行过滤,不能进行排序,但是show processlists直接连like *** 作都不行

mysql>show status where Variable_name like '%Slave%'

+------------------------------+----------+

| Variable_name| Value|

+------------------------------+----------+

| Com_show_slave_hosts | 0|

| Com_show_slave_status| 0|

| Com_show_slave_status_nolock | 0|

| Com_slave_start | 0|

| Com_slave_stop | 0|

| Slave_heartbeat_period | 1800.000 |

| Slave_open_temp_tables | 0|

| Slave_received_heartbeats| 0|

| Slave_retried_transactions | 0|

| Slave_running| OFF |

+------------------------------+----------+

10 rows in set (0.00 sec)

mysql>show status where Variable_name like '%Slave%' order by value

ERROR 1064 (42000): You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'order by value' at line 1

mysql>show status where Variable_name like '%Slave%' order by Value

ERROR 1064 (42000): You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'order by Value' at line 1

mysql>show tables from klb where Tables_in_klb like '%object%'

+----------------------+

| Tables_in_klb|

+----------------------+

| knowledge_object |

| tag_knowledge_object |

| tags_object |

+----------------------+

3 rows in set (0.00 sec)

mysql>show tables from klb order by Tables_in_klb

ERROR 1064 (42000): You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'order by Tables_in_klb' at line 1

mysql>show processlist where user='xueci'

ERROR 1064 (42000): You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'where user='xueci'' at line 1

查了下资料,这个好像是mysql的一个bug吧,或者是mysql处于其他考虑,屏蔽了这个功能

相关链接:htt p:/ /bugs.mys ql.c om/bug.p hp?id=21092

虽然直接show不能使用like,但是我们还是可以直接查询表来进行like 或者order *** 作

mysql>select user,host,time from information_schema.processlist where user='klb'

4 rows in set (0.00 sec)

mysql>select user,host,time from information_schema.processlist where user='klb' order by time desc

+------+---------------------+------+

| user | host| time |


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

原文地址: http://outofmemory.cn/zaji/7163811.html

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

发表评论

登录后才能评论

评论列表(0条)

保存