0

我有两个结构相同的表 Board1 和 Board2。它们都有一个主索引列id。我有一个名为 Table1 的第三个表,它有一个非索引列,其中多次出现board_id相同的情况。始终对应于 Board1 中的一个。Board2 目前是空的,我想从 Board1 添加行,但仅在 Table1 中至少出现六次的情况下添加行。Table1 将定期更改,因此我将需要在将来进行查询,但不会将Board2 中已经存在的行加倍。board_idboard_ididboard_idid

回顾一下:

共有三个表:Board1、Board2 和 Table1。我想将行从 Board1 复制到 Board2,但仅在idBoard1 中作为“board_id”在 Table1 中出现(至少)六次的地方。

我会很感激任何帮助!

编辑:我非常抱歉,但我意识到我在我的问题中犯了一个巨大的错误。我重写了它以反映我真正需要的东西。我真的很抱歉。

4

3 回答 3

0

You can do it like this

INSERT INTO Table2

SELECT
  id,
  board_id
FROM (SELECT
    b.id,
    b.board_id,
    bl.Count
      FROM board as b
    LEFT JOIN (SELECT
             board_id,
             COUNT(board_id) as `Count`
           FROM board
           GROUP BY board_id) as bl
      on bl.board_id = b.board_id
      group by b.id
      having bl.Count >= 6) as L

If you need more columns you can select them in inner and outer queries.

Fiddle Demo for Select

于 2013-02-28T10:50:17.407 回答
0

尝试以下方法:

  • 在指定的位置添加列名(不包括任何 ID 列),因为我假设每一行都有一个唯一的 ID,因此您将无法通过执行 GROUP 和 COUNTSELECT * FROM Table1

您可能需要对此进行测试/验证

INSERT INTO Board2 (Your Column Names)
SELECT (Your Column Names)    
FROM Board1 
WHERE id (IN (SELECT board_id 
                    FROM  Table1 
                    GROUP BY (board_id) 
                    HAVING (COUNT(*) >= 6))    
AND board_id NOT IN(SELECT DISTINCT board_id FROM Board2)
于 2013-02-28T10:58:43.107 回答
0

这是你的要求,用小提琴

INSERT Table2
SELECT
            *
    FROM
            Table1
        JOIN
            (
            SELECT
                    Board_Id,
                    count(*) cnt
                FROM
                    Table1
                GROUP BY
                    Board_Id
            ) BoardIds
                ON BoardIds.Board_Id = Table1.Board_Id
    WHERE
             BoardIds.cnt > 5
        AND
             NOT EXISTS (SELECT id FROM Table2 WHERE Table2.id = Table1.id)
于 2013-02-28T10:59:17.683 回答