2011-10-31 2 views
0

아마 내가 잘 설명하지 못했습니다. 문장의 Mysql

는 테이블입니다 :

표 1

CREATE TABLE `notforeverdata` (
`id` int(11) NOT NULL auto_increment, 
`num` varchar(255) default NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

INSERT INTO `notforeverdata` VALUES (1, '4,3,0,5'); 

표 내가해야 할 것은 확인하는 것입니다 2

CREATE TABLE `notforeverdata2` (
`id2` int(11) NOT NULL auto_increment, 
`num2` varchar(255) default NULL, 
PRIMARY KEY (`id2`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

INSERT INTO `notforeverdata2` VALUES (1, '2,5,6,8'); 

경우의 수의 notforeverdata 열 num2는 notforeverdata2의 열 num2에 있습니다. 이 경우 notforeverdata의 col num에있는 숫자 "5"가 notforeverdata2에 있습니다.

아이디어가 있으십니까? 나는 테이블을 생성 임의의 숫자와 함께로드하고 제공된 목록에서 각 번호를 검색합니다 예를 들어

감사

+4

데이터베이스에 CSV를 사용하지 마십시오. – Johan

+0

[FIND_IN_SET'] (http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set) 함수가 있습니다. 어쩌면 도움이 될 수 있습니다. – knittl

답변

0

. 다음은 catch입니다. 제공된 목록은 쉼표로 시작하고 쉼표로 끝나야합니다. 귀하의 질문에, 내가 사용하는 것 ', 3,2,5,'여기

에서

내가 실제로 내 바탕 화면에서 MySQL 5.5.12에서 그것을 실행 한 예를

use test 
drop table if exists notforeverdata; 
create table notforeverdata 
(
    id int not null auto_increment, 
    num VARCHAR(255), 
    PRIMARY KEY (id) 
); 
insert into notforeverdata (num) values 
(2),(7),(9),(11),(13),(15),(4),(3),(90),(97),(18),(5),(17); 
SELECT * FROM notforeverdata; 
SELECT * FROM notforeverdata WHERE LOCATE(CONCAT(',',num,','),(',3,2,5,')); 

입니다. 결과는 다음과 같습니다.

mysql> use test 
drop table if exists notforeverdata; 
Database changed 
mysql> drop table if exists notforeverdata; 
Query OK, 0 rows affected (0.03 sec) 

mysql> create table notforeverdata 
    -> (
    ->  id int not null auto_increment, 
    ->  num VARCHAR(255), 
    ->  PRIMARY KEY (id) 
    ->); 
Query OK, 0 rows affected (0.12 sec) 

mysql> insert into notforeverdata (num) values 
    -> (2),(7),(9),(11),(13),(15),(4),(3),(90),(97),(18),(5),(17); 
Query OK, 13 rows affected (0.06 sec) 
Records: 13 Duplicates: 0 Warnings: 0 

mysql> SELECT * FROM notforeverdata; 
+----+------+ 
| id | num | 
+----+------+ 
| 1 | 2 | 
| 2 | 7 | 
| 3 | 9 | 
| 4 | 11 | 
| 5 | 13 | 
| 6 | 15 | 
| 7 | 4 | 
| 8 | 3 | 
| 9 | 90 | 
| 10 | 97 | 
| 11 | 18 | 
| 12 | 5 | 
| 13 | 17 | 
+----+------+ 
13 rows in set (0.00 sec) 

mysql> SELECT * FROM notforeverdata WHERE LOCATE(CONCAT(',',num,','),(',3,2,5,')); 
+----+------+ 
| id | num | 
+----+------+ 
| 1 | 2 | 
| 8 | 3 | 
| 12 | 5 | 
+----+------+ 
3 rows in set (0.00 sec) 

mysql> 

이것은 물론 전체 테이블 스캔을 수행합니다. 그럼에도 불구하고, 이것은 효과적입니다.

사용해보기 !!!

+0

나는이 질문을 더 명확하게 편집했다. – notforever

관련 문제