2012-11-03 4 views
0

나는 Mysql은 프리스트 행을 선택하기위한 TOP 1 기능을 가지고 있지 않습니다. 그래서 한계 1을 사용합니다. 하지만 어떻게 동시에 프리스트 행 양식 두 테이블 (tableX, tableY)을 선택할 수 있습니다.첫 번째 행 양식을 두 테이블을 선택하십시오

??

SELECT * FROM Database.tableX 
limit 1, Database.tableY limit 1 
+3

두 테이블 중 첫 번째 행을 정의하는 것은 무엇입니까? 연결은 무엇입니까? –

+0

두 테이블 사이에 연결이 없으므로이 테이블을 한 행씩 처리해야합니다. – Samuel

+4

@samuel 그래서 테이블 사이에 연결이 없다면, 당신이 묻고있는 것은 말이되지 않습니다. 또한 ORDER BY를 사용하여 MySQL에 행 정렬 방법을 알려주지 않는 한 테이블의 "첫 번째"행과 같은 것은 없습니다. –

답변

0

그냥이 :

SELECT * 
FROM Database.TableX, Database.TableY 
LIMIT 1 

아니면이? 테이블 정의가 일치하는 경우

SELECT * 
FROM 
    (SELECT * FROM Database.TableX LIMIT 1) t1, 
    (SELECT * FROM Database.TableY LIMIT 1) t2 
+0

첫 번째 해결 방법은 첫 번째 행에 대해서만 작동하지만 행을 기준으로 행을 처리해야하는 경우에는 작동하지 않으며 두 번째 솔루션은 행 단위로 사용할 수 있습니다. 그렇지 않으면 UNION ALL 쿼리를 사용해야합니다. – fthiella

+0

아주 좋은 솔루션, 나는 당신의 첫 번째 솔루션을 누른 다음 새 테이블에 데이터를 삽입 다음 다른 두 개의 SQL statment 오래된 것들을 삭제하는 데 사용합니다. 그 다음 일을 끝냈다. 다시 고마워. 많은 시간을 절약하십시오. – Samuel

2

두 행 사이에 어떤 종류의 관계가 없으면 불가능합니다. 다른 답변은 두 행을 결합하려고 시도하지만 각 행의 첫 번째 행이라는 보장은 없습니다. 또한 두 테이블에서 일치시킬 수있는 필드가 있다고 가정합니다.

내 최고의 제안은 두 개의 쿼리를 수행하는 것입니다

SELECT * FROM Database.tableX limit 1;

SELECT * FROM Database.tableY limit 1;

편집 : 당신은 또한 어떻게 행을 정렬하는 MySQL을 알려하여 ORDER를 추가해야합니다.

+0

질문을 읽는 것조차 +1. –

2

아마도 :

SELECT * FROM Database.tableX LIMIT 1 
UNION ALL 
(
SELECT * FROM Database.tableY LIMIT 1 
) 

주 내부 브래킷이 필요하다. 그렇지 않으면 옵티마이 저가 결과 세트를 1로 제한합니다. LIMIT 1

관련 문제