遇到以下问题。我想在一个查询中执行SQL SELECT和UPDATE。我开始工作了,但是我没有得到结果。
这是我的示例代码:
<cfquery name="GetListings" datasource="#application.dsn#" result="get_data">
UPDATE listings AS t,
(
SELECT *
FROM listings
WHERE group = 92
) AS temp
SET t.premium_listing_count = t.premium_listing_count + 1 WHERE temp.id = t.id
</cfquery>
字段premium_listings_count按原样递增。
但是当我想简单地使用以下内容输出SELECT查询时:
<cfoutput query="GetListings">
#id#
</cfoutput>
我没有得到任何结果,实际上它甚至不知道变量'GetListings'
有什么想法吗?
答案 0 :(得分:0)
此处您只有guard bodyA.categoryBitMask < 1 << 31 && bodyB.categoryBitMask < 1 << 31 else {return}
if bodyA.categoryBitMask == 1 && bodyB.categoryBitMask == 3 || bodyA.categoryBitMask == 3 && bodyB.categoryBitMask == 1 {
print("END GAME")
player.categoryBitMask += 1<<31
if let dieexplostionNode = SKEmitterNode(fileNamed: "Explosion.sks"){
dieexplostionNode.targetNode = self
dieexplostionNode.position = player.position
// add 3 actions
let wait = SKAction.wait(forDuration: 1.1)
let addExplosion = SKAction.run {
self.player.addChild(dieexplostionNode)
self.player.alpha = 0
}
let removePlayer = SKAction.run {
self.player.removeFromParent()
self.player.removeAllActions()
dieexplostionNode.removeFromParent()
}
// put them in a sequence.
let seq = SKAction.sequence([addExplosion,wait,removePlayer])
// run the sequence
self.run(seq)
}
个查询,而不是UPDATE
。查询中的SELECT
语句被视为使用您使用的逗号创建另一个与SELECT
连接的表。然后,t
会在此已加入的表格上运行,但由于您要加入UPDATE
精简版listings
,因此您实际上只是更新listings
,这就是您{ {1}}正在运作。您不应该接收任何数据,因为listings
只修改行,而不是返回数据。
答案 1 :(得分:0)
您没有指定您正在使用的数据库服务器。这在MS SQL Server中当然是可行的。事实上,在使用MS SQL Server时,您可以使用cfquery标记内的变量和条件逻辑执行相当于T-SQL程序的内容。
但是,您可以从所有执行的SQL中检索的唯一数据是单个结果集。如果您想要多个结果集或将其他值传回,则必须使用cfstoredproc。
如果您正在使用MS SQL Server,以下代码将实现您的目标。我确定你的数据库可以做类似的事情。
<cfquery name="GetListings" datasource="#application.dsn#" result="get_data">
SELECT * FROM listings WHERE [group] = 92;
UPDATE listings
SET
premium_listing_count = premium_listing_count + 1
WHERE
[group] = 92;
</cfquery>
如果确实如此,您可以使用MS SQL Server中的单个语句执行此操作。如,
<cfquery name="GetListings" datasource="#application.dsn#" result="get_data">
UPDATE listings
SET
premium_listing_count = premium_listing_count + 1
OUTPUT
deleted.*
WHERE
[group] = 92;
</cfquery>
组必须用括号括在查询中,因为它是SQL Server中的保留字。
编辑:
一旦我意识到你专门询问MYSQL,这就是你问题的答案 -
是的,你可以通过添加&#34; allowMultiQueries = true&#34;来包含多个查询。到CF数据源中的连接字符串。但是,我上面提到的其他一切仍然适用。您只需使用MYSQL语法。