MySQL逗号分隔字段查询

MySQL逗号分隔字段查询,mysql,list,comma,Mysql,List,Comma,我有一张这种格式的桌子 name char password char ips char lastAction timestamp 样本: SELECT * FROM XXXX LIMIT 0,1; | name | password | ips | lastAction | | Dixon | encripted password here | 190.31.x

我有一张这种格式的桌子

name char
password char
ips char
lastAction timestamp
样本:

SELECT * FROM XXXX LIMIT 0,1;

| name  | password                |      ips                                    | lastAction          |
| Dixon | encripted password here | 190.31.xx.xxx,201.252.xx.xxx,190.137.xx.xxx | 2013-08-03 14:27:38 |
我要做的是搜索一个名称,找出该名称分配的IP,并搜索包含至少一个逗号分隔的IP列表值的名称。我遇到的问题是,它是一个逗号分隔的列表

到目前为止,我在bash中所做的是(省略了不必要的部分):

mysql-h host-uroot-ppassword数据库-e“从crazylogin_帐户中选择IP,其中name='$nombre'>multi.log
cat multi.log | tr',''\n'>ip.log
cat multi.log | sed's/,//g'| tr''''\n'>ip.log
读行时
做
mysql--table-h host-uroot-ppassword database-e“选择名称作为Nombre,最后一个操作作为Ultimaccion,从xxxxx开始,IP像“%$line%””>>user.log
完成
问题是它根本没有经过优化。有些用户有大约10个或更多的值,这会生成10个查询。另一个问题是格式,我只想使用--table格式化一个结果。 第三个问题是,由于我有重复的结果,我也无法重复搜索每个结果(再次搜索每个结果,寻找至少有一个共享ip的用户)


任何关于正确道路的暗示都将受到赞赏。多谢各位

至于优化,您可以通过表格来解决

用户表

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` varchar(32) NOT NULL,
    `password` varchar(123) NOT NULL, 
    `lastaction` date NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `ips` (
    `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `ipaddress` varchar(32) NOT NULL,
    PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=1 ;
登录表

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` varchar(32) NOT NULL,
    `password` varchar(123) NOT NULL, 
    `lastaction` date NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `ips` (
    `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `ipaddress` varchar(32) NOT NULL,
    PRIMARY KEY (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=1 ;
从这里,您可以通过左连接访问用户的帐户信息及其登录IP

SELECT
    u.id as user_id,
    u.name as user_name,
    u.password as user_password,
    u.lastaction as user_lastaction,
    i.ipaddress as ipaddress
FROM users as u
LEFT JOIN ips as i ON i.id = u.id
WHERE user_name = `bob`;