SQL 交易 ELSE IF 与 SELECT
SQL Transaction ELSE IF with SELECT
我正在尝试创建一个查询,它将检查它是否存在于 table 中,如果存在,它只会将数量加一 qty
否则它将从选择中插入来自其他 table,在我的例子中 temp_sales
这是我目前的sql。
SET
TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRANSACTION; IF EXISTS (
SELECT
pid
FROM
temp_sales
WHERE
barcode = '4800556410652'
) BEGIN
UPDATE
temp_sales
SET
qty = qty + 1
WHERE
barcode = '4800556410652' END ELSE INSERT INTO temp_sales (
0,
(
SELECT
products.ID,
products.product_sprice as price,
1,
1 * price,
'4800556410652',
'101',
'admin'
WHERE
barcode = '4800556410652'
)
) END COMMIT TRANSACTION;
我一直在关注 UPDATE if exists else INSERT in SQL Server 2008 的这个 Whosebug 答案,但我没有运气。
MySQL 错误 #104 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRANSACTION' at line 1
我做错了什么?
编辑
PL: vb.net
数据库:MySQL(xampp)
感谢您的评论,我的不好。我正在关注 SQL 服务器查询,而不是关注 MySQL 查询。
但这是经过一些额外搜索后的答案(当然是在评论员的帮助下)- 谢谢
答案:
INSERT into temp_sales (
ID, pid, price, qty, total, barcode,
pos_id, teller
)
SELECT
'0',
ID as pid,
products.product_sprice,
1,
products.product_sprice,
@barcode,
'101',
'admin'
FROM
products
WHERE
barcode = @barcode ON DUPLICATE KEY
UPDATE
qty = qty + 1,
total = price * qty
我正在尝试创建一个查询,它将检查它是否存在于 table 中,如果存在,它只会将数量加一 qty
否则它将从选择中插入来自其他 table,在我的例子中 temp_sales
这是我目前的sql。
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRANSACTION; IF EXISTS ( SELECT pid FROM temp_sales WHERE barcode = '4800556410652' ) BEGIN UPDATE temp_sales SET qty = qty + 1 WHERE barcode = '4800556410652' END ELSE INSERT INTO temp_sales ( 0, ( SELECT products.ID, products.product_sprice as price, 1, 1 * price, '4800556410652', '101', 'admin' WHERE barcode = '4800556410652' ) ) END COMMIT TRANSACTION;
我一直在关注 UPDATE if exists else INSERT in SQL Server 2008 的这个 Whosebug 答案,但我没有运气。
MySQL 错误 #104 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRANSACTION' at line 1
我做错了什么?
编辑
PL: vb.net 数据库:MySQL(xampp)
感谢您的评论,我的不好。我正在关注 SQL 服务器查询,而不是关注 MySQL 查询。
但这是经过一些额外搜索后的答案(当然是在评论员的帮助下)- 谢谢
答案:
INSERT into temp_sales ( ID, pid, price, qty, total, barcode, pos_id, teller ) SELECT '0', ID as pid, products.product_sprice, 1, products.product_sprice, @barcode, '101', 'admin' FROM products WHERE barcode = @barcode ON DUPLICATE KEY UPDATE qty = qty + 1, total = price * qty