1
유니언에서 하위 쿼리를 참조 할 수있는 방법이 있습니까?유니온에서 MYSQL, 하위 쿼리 참조
나는 다음과 같은 일을하려고하고, 임시 테이블을 피하기 위해 싶지만, 한 번만 작업을 수행하는 것이 의미가 있도록 하위 쿼리가 훨씬 더 큰 데이터 집합에서 그려집니다 ..
SELECT * FROM (SELECT * FROM ads WHERE state='FL' AND city='Maitland' AND page='home' ORDER BY RAND()) AS sq WHERE spot = 'full-banner' LIMIT 1
UNION
SELECT * FROM sq WHERE spot = 'leaderboard' LIMIT 1
UNION
SELECT * FROM sq WHERE spot = 'rectangle1' LIMIT 1
UNION
SELECT * FROM sq WHERE spot = 'rectangle2' LIMIT 1
.... etc,,
결과 집합의 단일 열에 대해 DISTINCT를 지정할 수 없다는 것은 유감입니다.
tbl은 첫 번째 하위 쿼리에 대한 참조 일 뿐이므로 어쩌면 그 이름이 다소 혼란 스럽습니다. 광고 테이블은 크지 만 하위 쿼리 이후에는 약 90 개의 행만 남습니다. 혼동을 피하기 위해 별칭을 업데이트하겠습니다. – christian
알았어요. 내 대답이 업데이트되었습니다. –
내 초기 테스트 결과 다음과 같은 결과가 나타났습니다! ... * * (* 선택 광고 * 여기에서 상태 = 'FL'AND city = 'Maitland'ORDER BY RAND()) sq GRO BY BY .spot ... 그래서 GROUP BY는 하나의 결과 만 반환합니다. 나는 ORDER BY와 비슷하다고 생각했다. 감사 – christian