仅当选择计数> n

时间:2018-09-03 22:57:22

标签: mysql mysqli pdo insert

我有2个查询:

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

有没有办法将这两个查询合并为一个?我尝试使用'IF(count> 0,..)'和类似的方法,但是查询不正确。 这涉及将新记录插入表中,请注意不要超过每个字段的预设记录数。 从理论上讲,它应该类似于INSERT IF ...

编辑:

@Barmar我尝试过,但是我想我不明白您的内容(实际上我在查询中犯了一个错误),我尝试这样回答:

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:字段(ID,TEAMID,NAME)=>(id = int,teamid = int与表团队相关联,name = varchar)

表团队:fields(ID NAME)=>(id = int,name = varchar)

假设一个团队中的玩家人数最多为20,因此对于相同的teamid值,您期望玩家表格最多关联20条记录,或者至少这是我们人类认为的,因为对于计算机而言,它也可以是无限的。我一直在寻找一种方法,仅在实际上允许插入记录的情况下才允许插入,在这种情况下,条件是在玩家表中每队少于21条记录。

1 个答案:

答案 0 :(得分:2)

您可以使用Nonlinear regression model model: y ~ a * (e * n + k1 * k2 + c) data: parent.frame() a e 2.310e-10 5.668e+05 residual sum-of-squares: 1.673e-26 Number of iterations to convergence: 12 Achieved convergence tolerance: 1.49e-08 ,并将条件放入INSERT ... SELECT查询中。

SELECT

INSERT INTO player (teamid, name) SELECT @teamid, @playername FROM DUAL WHERE (SELECT COUNT(*) FROM player WHERE teamid = @teamid) < 20 是一个虚拟表,需要选择文字数据,但需要在查询中包括其他子句。