У меня 2 запроса:
SELECT COUNT(*) FROM a WHERE id = 1
//if row == 1
INSERT INTO a VALUES(fielda) VALUES('value')
Есть ли способ объединить эти два запроса в один? Я пытался с 'IF (count> 0, ..)' и аналогичными, но запрос неверен.
Это включает вставку новой записи в таблицу, стараясь не превышать предварительно установленное количество записей для каждого поля.
Теоретически это должно быть похоже на INSERT IF ...
Edit:
@ 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)
Мне пришел в голову этот пример, который я пытаюсь показать вам:
ИГРОК ТАБЛИЦЫ: поля (ID, TEAMID, ИМЯ) => (id = int, teamid = int, привязанный к команде таблицы, name = varchar)
TABLE TEAM: поля (ID NAME) => (id = int, name = varchar)
Предположим, что игроков в команде максимум 20, поэтому вы ожидаете максимум 20 записей, связанных с таблицей игроков, для одного и того же значения teamid, или, по крайней мере, это то, что мы, люди, думаем, потому что для компьютера также может быть бесконечным. Я искал способ разрешить вставку только в том случае, если на самом деле допустимо вставлять записи, в этом случае условие состоит в том, что в таблице игроков в каждой команде менее 21 записи.