簡體   English   中英

Mysql select語句包含where子句,因此不適合插入

[英]Mysql select statement contains where clause so unsuitable for insert into

我沒有經驗。 我准備了一條select語句,該語句提供了填充匹配表所需的信息。 但是,它不適合,因為它包含where子句。 是否有其他使用方式,或者如何更改它以使其適合INSERT INTO。

下表如下:

match_order

match_order_id || match_descrip || first_player || second_player
1 1v2 1 2
2 1v3 1 3
3 2v3 2 3
4 1v4 1 4
5 2v4 2 4
6 3v4 3 4

參賽作品

entry_id || round_id || league_id || box_id || box_position
1 1 1 1 1
2 1 1 1 2
3 1 1 1 3
4 1 2 1 4
5 1 2 1 2
6 1 2 1 1
7 1 2 1 1

火柴

match_id || round_id || league_id || box_id || match_order_id || player1 || player2

我需要每個月插入新行以進行新一輪的比賽。 聯賽大小,方塊大小和位置每月都會變化。

這是給出正確行的語句。

SELECT e.round_id, e.league_id, e.box_id, mo.match_order_id, e.entry_id as player1, e1.entry_id as player2
FROM match_order mo
LEFT JOIN entries e ON mo.first_player = e.box_position
LEFT JOIN entries e1 ON mo.second_player = e1.box_position
WHERE e.round_id = e1.round_id AND e.league_id = e1.league_id AND e.box_id = e1.box_id
ORDER BY round_id, league_id, box_id, match_order_id

任何幫助和建議,將不勝感激。 謝謝

假設match_id是一個自動遞增的列,則您具有其他列的數據。 您可以僅在SELECT之前添加INSERT語句。

INSERT INTO matches(round_id, leage_id, box_id, match_order_id, player1, player2)
SELECT e.round_id, e.league_id, e.box_id, mo.match_order_id, e.entry_id as player1, e1.entry_id as player2
FROM match_order mo
LEFT JOIN entries e ON mo.first_player = e.box_position
LEFT JOIN entries e1 ON mo.second_player = e1.box_position
WHERE e.round_id = e1.round_id AND e.league_id = e1.league_id AND e.box_id = e1.box_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM