【发布时间】:2016-04-16 21:41:49
【问题描述】:
我正在:
INSERT INTO family (family_id, member_id)
VALUES (maxfamily, membersid)
(SELECT member_id as membersid, (MAX(family_id)+1) as maxfamily
FROM members
GROUP BY lname
HAVING COUNT (lname)>1)
当前错误:查看与您的 MySQL 服务器版本相对应的手册,在第 3 行的“(SELECT member_id as membersid, (MAX(family_id)+1) as maxfamily FROM member”附近使用正确的语法
我假设这是来自 MAX(family_id),因为它不知道当前的最大数量,因为没有参考家庭表?
意图:
从成员表中查找具有相同姓氏的人。使用此查询将新记录插入族表中。
Example:
members table
Andersen, Fred, id=288
Andersen, Smith, id=289
Smith, Peter, id=385
Smith, Elizabeth, id=404
Williams, Kevin, id=408
family table (currently empty)
family_id, member_id
1, 288
1, 289 (this covers the Anderson family)
2, 385
2, 404 (this covers the Smith family)
问题:如何为此任务创建正确的查询?请注意,家庭 id 会根据最后一个最大值自动递增。
我知道如何在编程中做到这一点我只想在直接 SQL 中做到这一点。
Williams 的名字被忽略,因为它没有匹配的姓氏。
TIA
【问题讨论】:
-
好吧,不是这个,一开始您尝试在 2 个字段中选择 3 个值。数到 10 重新开始
-
您需要将
VALUES (maxfamily, membersid)替换为返回 2 个值的选择。 where 子句无关紧要 -
如果family_id是auto_incremented,你怎么会有多行相同的family_id?
-
仍在与它斗争。目前只是给出 SQL 错误。 family_id 不会自动递增,因为它不是表的唯一索引。它只是一个允许重复的索引。
标签: mysql