2013-01-16 5 views
0

테이블이 서로 같지 않은 3 개의 테이블이 있습니다. 내 요구 사항 중 하나에 따르면 나는이 모든 테이블 레코드를 다른 테이블에 복사해야했습니다. 그 부분은 괜찮습니다. 제가 삽입 한 기록은 지금 명령에 따르는 것이 내 문제입니다. 내가하고 싶었던 것을 mysql 테이블에서 행을 변경 (순서를 변경) 할 수있는 방법이 있습니까?

first 100 records from table1 
second 100 records from table2 
third 100 records from table3 

같이하는 change/mix입니다 내가 테이블에서이 해야한다 기록 처음 100 개 개의 레코드를 선택한 경우 기록 positions.Like.

ORDER BY Rand()에서 데이터를 선택하고 싶지 않습니다. 데이터를 선택하고 표시해야합니다. 이 문제를 해결할 수있는 방법이 있습니까? 감사합니다.

+2

특정 순서로 데이터를 원한다면 ** 보장 할 수있는 방법이 ** 있습니다. 행을 검색 할 때 가장 외부의 SELECT 쿼리에'ORDER BY' 절을 제공하는 것입니다. –

+0

select 명령문의 순서를 임의로 지정하려면 [rand] (http://dev.mysql.com/doc/refman/5.5/en/mathematical-functions.html#function_rand) 함수를 사용할 수 있습니다. – hd1

+0

삽입 할 때 각 레코드에 고유 한 인덱스 번호가 있습니까? – bonCodigo

답변

0

단순한 것부터 틈새, 틈이없는 것까지 여러 가지 사례를 다루는 훌륭한 게시물입니다.

http://jan.kneschke.de/projects/mysql/order-by-rand/

가장 일반적인 경우, 여기 당신이 그것을 할 방법은 다음과 같습니다

SELECT name 
FROM random AS r1 JOIN 
    (SELECT (RAND() * 
       (SELECT MAX(id) 
        FROM random)) AS id) 
    AS r2 
WHERE r1.id >= r2.id 
ORDER BY r1.id ASC 
LIMIT 1 

이 ID의 분포가 동일하다고 가정한다, 그리고 ID 목록에 차이가있을 수있다. 그러나

INSERT INTO merged (a, b) 
SELECT a, b FROM (
    SELECT a, b, rand() AS r FROM t1 
    UNION ALL 
    SELECT a, b, rand() AS r FROM t2 
) ORDER BY r 

: 당신은 당신이 처음에 rand()에 의해 주문을 선택 조합에서 삽입하여 테이블을 만들 수 rand()으로 나중에 쿼리하지 않으려면 고급 예

+0

) [this] (http://sqlfiddle.com/#!2/e8509/6) 실제로 완전하지 않은 것으로 보입니다 * 완전 무작위 * 그러나 무작위 연속;)이 경우에는 [x 숫자를 제공] (http://sqlfiddle.com/#!2/e8509/6)의 보증하지 않습니다 행 중 하나입니다 .. – bonCodigo

+0

예, @bonCodigo 예, 친구 제가 벌써 시도했지만 예상대로 작동하지 않습니다 – vinu

0

을위한 문서를 참조하십시오 , 또한 방금 온이 게시물을 고려하십시오 : INSERT INTO SELECT strange order using UNION, 아마도 누군가가 논평 할 수 있습니다.

+0

고마워요. 친구가 제가 점수를 얻었습니다. 제 테이블이 너무 다르기 때문에 테이블을 다시 만드는 것과는 조금 다른 투쟁입니다. 나를 위해서. 나는 ..하려고. – vinu

관련 문제