使用MS SQL-SERVER
我想知道是否有可能或更好地说,在插入的值之一依赖于另一个表的情况下,将值插入表中是最有效的方法,如果另一个表格上不存在Select查询,它就不会这样做。
例如下一个查询
INSERT INTO producto VALUES
('ad-101', '27', 'Nissan','NP300','2016','aer3457','1',(SELECT Id from Inventario WHERE Serie = '5161017293')),
('ad-102', '27', 'Nissan','NP300','2015','aer5647','1',(SELECT Id from Inventario WHERE Serie = '5161019329'))
如果5161019329
不在Inventory表上,则只插入1行。
我知道我总是可以为选择部分做一个单独的查询,然后在php上做逻辑来插入或不插入,但这并没有那么有效,因为有时我可以一次插入100行。
谢谢,
如果您选择的ID号返回的列不是可为null的列,mysql应该阻止插入并引发错误。
您可以使用以下查询,它应该可以工作
INSERT INTO producto
SELECT
'ad-101', '27', 'Nissan','NP300','2016','aer3457','1', Id FROM Inventario WHERE Serie = '5161017293'
如果Serie
5161017293的Incentario
中没有行,则不会插入任何数据。
PDO有一个rowCount()函数,可以调用该函数来计算您所做查询的行数,如果这就是您的意思的话。(这个问题没有真正的意义)
你可以试试:
$query = $handler->query("Your select query");
if ($query->rowCount() == 0) {
// Insert Query
}
除此之外,我没有太多使用MySQLi连接,但您可以使用从0开始的$count++
变量循环查询,然后如果$count
变量等于0,则稍后在逻辑中插入查询。
如果答案没有意义,很抱歉,但问题也没有意义。