2013-03-11 2 views
0

이름 끝에 지정된 번호가있는 모든 테이블을 선택해야합니다 (번호는 현재 연도 - 현재 달과 6 개월 연결 - 6 개월). mysql - 이름 끝에 지정된 번호의 테이블 가져 오기

나는이 시도하지만 결핵은 열

SELECT 
table_name AS tb 
FROM 
information_schema.tables 
WHERE 
table_schema = DATABASE() 
AND tb LIKE "something_%" 
AND (SELECT DATE_FORMAT(CURDATE() - INTERVAL 6 MONTH,'%Y%m')) < RIGHT(tb, 6) 

모든 아이디어를 어떻게 할 방법이 아니기 때문에 실패?

답변

0

WHERE 절에서 별칭을 사용할 수 없습니다. 그리고 LIKE은 (를) 지원하지 않으므로 AND과 같은 모양입니다. 문자열을 만들어야합니다 CONCAT()

SELECT 
table_name AS tb 
FROM 
information_schema.tables 
WHERE 
table_schema = DATABASE() 
AND table_name LIKE CONCAT('something', (SELECT DATE_FORMAT(CURDATE() - INTERVAL 6 MONTH,'%Y%m'))) 
+0

첫 번째 대답은 좋았습니다. 별칭이 문제였습니다. – zozo

0

글쎄, 우선, 이것은 나쁜 표 디자인과 같은 냄새가 난다. 테이블 이름에 정보를 인코딩해야한다면 테이블의 열에 넣을 수도 있습니다. 그런 다음 문제가 발생하지 않습니다.

두 번째로 SELECT 문에 FROM이 누락되어 있지만 두 번째 SELECT 전체가 그렇게 작동하지 않습니다.하지만 실제로 도움이되는 방법을 모르겠습니다. 내 첫 번째 지점을 봐 ;-)

관련 문제