看看这段代码。它应该告诉你我想要做什么:
SELECT type from barcodes where barcode = barcodeApp INTO @barcodeType;
IF (@barcodeType = 'videogame') THEN
SET @barcodeType = 'game';
END IF;
DELETE FROM @barcodeType + itemdetails_custom
WHERE barcode = barcodeApp
AND username = usernameApp;
正如您所看到的,在DELETE FROM
部分,我想从上一个查询的结果中动态组合表名。这可能吗?
另外,如果您发现上述问题存在问题,请告知我们。我显然不是MySQL专家。
答案 0 :(得分:1)
您需要使用Prepared Statement
来执行动态准备的查询。
请尝试以下代码:
set @del_query = concat( 'DELETE FROM ', @finalType )
set @del_query = concat( '\'', itemdetails_custom, '\'' );
set @del_query = concat( @del_query, ' WHERE barcode = \'', barcodeApp, '\'' );
set @del_query = concat( @del_query, ' AND username = \'', usernameApp, '\'' );
prepare stmt from @del_query;
execute stmt;
drop prepare stmt; -- deallocate prepare stmt;
注意:我认为barcodeApp
和usernameApp
是变量。否则,请在上面的查询中删除它们周围的单引号。