보기 나 테이블 또는 임시 테이블을 사용하면 동일한 결과를 얻을 수 있다고 생각했습니다.MySQL에서 다른 결과가 VIEW와 TABLE을 비교할 때 @vars를 사용할 때
CREATE TABLE
또는 CREATE TEMPORARY TABLE
과 작동하는 다른 명령문에서 사용할 출력을 만들고 있지만 CREATE VIEW
에서는 작동하지 않습니다.
내가 만드는 출력은 3 개의 조인 된 테이블에서 필드를 사용합니다. 흥미로운 부분은 출력에서 IFs
및 @vars
을 사용하여 그룹 내에 서수를 추가하는 새로운 필드입니다. 나는 그것이에 추가 된 새로운 서수 열이 같이하고 싶은
display_name date_played end_hcp
Alan 2017-08-23 720
Alan 2017-08-29 692
Alan 2017-09-26 694
Bill 2017-08-24 865
Bill 2017-09-02 868
Bill 2017-09-21 842
Dave 2017-08-24 363
Dave 2017-08-31 339
Dave 2017-09-05 332
Dave 2017-09-15 348
Dave 2017-09-17 374
그리고 여기이있다 : 다음은 순서 필드하여 w/o 출력의 일부 샘플 데이터의 다음
display_name date_played end_hcp Ordinal
Alan 2017-08-23 720 1
Alan 2017-08-29 692 2
Alan 2017-09-26 694 3
Bill 2017-08-24 865 1
Bill 2017-09-02 868 2
Bill 2017-09-21 842 3
Dave 2017-08-24 363 1
Dave 2017-08-31 339 2
Dave 2017-09-05 332 3
Dave 2017-09-15 348 4
Dave 2017-09-17 374 5
사용하여 작업 코드입니다 CREATE TEMPORARY TABLE
: 나는 CREATE OR REPLACE VIEW
를 사용하는 경우
DROP TEMPORARY TABLE IF EXISTS pre_ordinal;
CREATE TEMPORARY TABLE pre_ordinal AS
SELECT u.display_name,
m.date_played,
p.end_hcp
FROM `lwljhb_lwl_matches` AS m
JOIN `lwljhb_lwl_players` AS p
JOIN `lwljhb_users` AS u
ON m.id = p.match_id AND
p.player_id = u.id
WHERE league_seasons_id = 12 AND
playoff_round = 0
ORDER BY u.display_name, m.date_played;
SELECT po.*,
@rn := if (@display_name = po.display_name,
@rn + 1,
if (@display_name := po.display_name, 1, 1)
) as Ordinal
FROM pre_ordinal AS po
JOIN (select @rn := 0, @display_name:=null) x
ORDER BY po.display_name, po.date_played;
는 서수 열은 거의 모두 1이다. 나는 매우 적은 시간에 각각 Ordinal> 1을 가졌음을 발견했습니다. 이는 매치 테이블의 ID가 연속적이었던 것입니다 (레코드는 물리적 순서대로였습니다).
WordPress 플러그인 내에서 SQL을 사용하여 차트를 만들고 싶습니다. 어떤 이유에서든 플러그인은 다중 명령문에서는 작동하지 않으므로 CREATE TABLE
접근 방식은 작동하지 않지만 CREATE OR REPLACE VIEW
은 하나의 명령문 일 뿐이며 잘못된 대답을 얻습니다.
왜 이렇게 될까요?
2 문 문제를 해결할 방법이 있다고 생각하지 않습니까? –
보기에서 색인을 사용할 수 있습니까? - 신경 쓰지 마라, 전망에 색인 없음. –
WordPress 플러그인을 수정하는 코딩 작업이 필요하다고 생각합니다. –