mysql query insert into only if select count>n仅当选择count>n时

kpbwa7wx  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(314)

我有两个问题:

SELECT COUNT(*) FROM a WHERE id = 1
//if row == 1
INSERT INTO a VALUES(fielda) VALUES('value')

有没有办法把这两个查询合并成一个查询?我尝试了“if(count>0,…”和类似的查询,但查询不正确。这涉及到在表中插入一条新记录,注意不要超过每个字段的预设记录数。从理论上讲,如果。。。
编辑:
@我试过了,但我想我不明白你写了什么(事实上我在查询中犯了一个错误),我试着这样回答:

THE QUERY AFTER YOUR RESPONSE:
INSERT INTO table1 SELECT MAX(id) FROM table1 WHERE field1 = (SELECT id from a WHERE f = field2) HAVING COUNT(*) = 1 (all fields request) VALUES (all values request)

//field1 = id from table2
//field2 = id from another table: associative value

//ORIGINAL QUERY
//FIRST COUNT:
SELECT COUNT(*) from table1 WHERE field1 = (SELECT id FROM table2 WHERE f = field2)
//AFTER THE INSERT:
INSERT INTO table1 (all fields request) VALUES (all values request)

我想到了这个例子,我想告诉你:
table player:fields(id,teamid,name)=>(id=int,teamid=int关联到table team,name=varchar)
表team:fields(id name)=>(id=int,name=varchar)
假设一个团队中的玩家最多有20个,那么对于相同的teamid值,您希望player表最多有20个相关记录,或者至少这是我们人类的想法,因为对于计算机来说,也可以是无限的。我在寻找一种方法,只允许在实际允许插入记录的情况下插入记录,在这种情况下,条件是在球员表中,每队只有不到21条记录。

jtw3ybtb

jtw3ybtb1#

你可以用 INSERT ... SELECT ,并将条件放入 SELECT 查询。

INSERT INTO player (teamid, name)
SELECT @teamid, @playername
FROM DUAL
WHERE (SELECT COUNT(*) FROM player
        WHERE teamid = @teamid) < 20
``` `DUAL` 当您需要选择文本数据,但需要在查询中包含其他子句时,是一个伪表。

相关问题