【问题标题】:Mysql select statement contains where clause so unsuitable for insert intoMysql select 语句包含 where 子句,因此不适合插入
【发布时间】:2018-03-07 16:33:34
【问题描述】:

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

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

【问题讨论】:

  • 你不能在SELECT 之前添加INSERT INTO matches(round_id, leage_id, box_id, match_order_id, player1, player2) 吗?并且可能删除ORDER BY

标签: mysql sql-insert where-clause


【解决方案1】:

假设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

【讨论】:

  • 非常感谢,这就是我尝试过的(显然在某处有错误),这次它工作得很好。我忙于想其他方法并在谷歌上搜索了太多东西。
猜你喜欢
  • 2016-03-18
  • 2010-12-07
  • 1970-01-01
  • 2010-10-03
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多