Mysql select语句包含where子句,因此不适合插入

时间:2018-03-07 16:33:35

标签: mysql sql-insert where-clause

我很缺乏经验。我已经准备了一个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

任何帮助&建议将不胜感激。 谢谢

1 个答案:

答案 0 :(得分:0)

假设match_id是自动增量列,则您拥有其他列的数据。您只需在INSERT之前添加SELECT语句。

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