如何声明变量以用于PostgreSQL 8.3查询?
在MS SQL Server中,我可以这样做:
DECLARE @myvar INT
SET @myvar = 5
SELECT *
FROM somewhere
WHERE something = @myvar
Run Code Online (Sandbox Code Playgroud)
我如何在PostgreSQL中做同样的事情?根据文档变量被简单地声明为"名称类型;",但这给了我一个语法错误:
myvar INTEGER;
Run Code Online (Sandbox Code Playgroud)
有人能给我一个正确语法的例子吗?
说我有一个表order作为
id | clientid | type | amount | itemid | date
---|----------|------|--------|--------|-----------
23 | 258 | B | 150 | 14 | 2012-04-03
24 | 258 | S | 69 | 14 | 2012-04-03
25 | 301 | S | 10 | 20 | 2012-04-03
26 | 327 | B | 54 | 156 | 2012-04-04
Run Code Online (Sandbox Code Playgroud)
clientid是一个回到client桌面的外键itemid是一个回到item表的外键type只是B或Samount 是一个整数和一张桌子processed作为
id | orderid …Run Code Online (Sandbox Code Playgroud) 我有一个数据库,不时更新数据集.在这里,可能会发生已经存在于数据库中的数据集.
目前我是第一个做的
SELECT FROM ... WHERE val1=... AND val2=...
Run Code Online (Sandbox Code Playgroud)
检查是否已存在具有这些数据的数据集(使用WHERE语句中的数据).如果这不返回任何值,我正在执行INSERT.
但这对我来说似乎有点复杂.所以我的问题是:是否存在某种条件INSERT,只有在它不存在的情况下才会添加新数据集?
我正在使用SmallSQL
我在PHP中使用PDO对象来运行MYSQL查询,我一直在尝试处理查询以加快它的速度.查询如下,如我的PHP文件中所示:
$query =
"SELECT SQL_NO_CACHE f.position, s.item_id, s.item_type, s.title, s.caption, s.date
FROM apiv2.search_all s
INNER JOIN apiv2.tags t
USING(item_id, item_type)
LEFT JOIN apiv2.featured f
ON t.item_id = f.item_id AND t.item_type = f.item_type AND f.feature_type = :id
WHERE t.tag = 'FeaturedContent'
ORDER BY position IS NULL, position ASC, date";
$mysql_vars[':id'] = $id;
$stmt = $connection->prepare($query);
$stmt->execute($vars);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
此查询的运行方式有很大不同,具体取决于我是否包含ORDER BY子句,但仅限于MYSQL控制台:
- MYSQL Console with ORDER BY: 1.07 sec
- starting 0.000141
- Opening tables 0.001416
- System lock 0.000003
- …Run Code Online (Sandbox Code Playgroud) 所以我有这个完全在客户端上运行的游戏.除了下载初始脚本以玩游戏之外,没有服务器交互.无论如何,在游戏结束时,我希望客户端将我应该在服务器数据库中更新的分数发回给我.现在我开始接受这样一个事实,即地球上没有任何办法我可以将其隐藏起来并将分数保持不变.但我想知道,直到我能在多大程度上修改整个过程,黑客操纵正在发送的数据几乎变得不可行.我肯定不希望得分作为客户端机器的纯文本发送,我不希望我的服务器执行复杂的解密算法.什么是最好的方式,因此实现相当大的安全性,每个汤姆迪克和哈里不破解分数...我希望有人可以提供一个很好的小方法,我可以工作...... :)谢谢
所以我的理想结果应该是 - >得到一个不受信任的一方(玩家)计算(得分)的可信结果!
-编辑-
有人告诉我一些关于在图片获取请求中隐藏数据的事情.就像,我在画布上实现这个游戏(html5).所以他在比赛结束时让我告诉我从我的服务器上取一个游戏而不是图像,他们的请求应该包含哈希分数.我并不完全理解整个过程,但如果你能解释一下,那真的很高兴!:)
coda ^所以你可以很好地掩盖请求
shouvik我该怎么做!?
coda ^您可以撰写要提交的校验和.像12312312a12313a232是你的md5,其中包含分数.像画布一样将资产带进画布
coda ^ server.com/images/md5_hash_of_score/congratulations.png
coda ^你可以通过htaccess重写服务器端
我知道这是真的:
x[4] == 4[x]
Run Code Online (Sandbox Code Playgroud)
多维数组的等价物是什么?以下是真的吗?
x[4][3] == 3[x[4]] == 3[4[x]]
Run Code Online (Sandbox Code Playgroud) 我需要获得最新订单(来自我们的客户管理面板).这是我的查询:
select *
from order
left join customer
on (customer.id = order.fk_cid)
where date = curdate()
order by time desc
limit 1;
Run Code Online (Sandbox Code Playgroud)
这输出了我需要的订单和客户的一切,除了1因此这就是为什么我使用*
这是我的表格结构:
order table:
id, fk_cid, date, time
customer table:
id, name, lastname, street, city, zip, country, phone, email, lastlogin
Run Code Online (Sandbox Code Playgroud)
现在,在我的PHP我有:
$result = mysql_query("
select *
from `order`
left join customer
on (customer.id = order.fk_cid)
where date = curdate()
order by time desc
limit 1");
$row = mysql_fetch_assoc($result, MYSQL_ASSOC);
Run Code Online (Sandbox Code Playgroud)
此时我的订单不正确,为什么?
无论如何,我可以将一个完整填充的MyISAM数据库转换为InnoDB(以某种方式创建所有外键约束,就像我从头开始运行syncdb命令一样)?
我有两个表:tableA (idA, titleA)和tableB (idB, idA, textB)有一个在它们之间一对多的关系.对于tableA中的每一行,我想检索tableB中对应的最后5行(由idB排序).
我试过了
SELECT * FROM tableA INNER JOIN tableB ON tableA.idA = tableB.idA LIMIT 5
Run Code Online (Sandbox Code Playgroud)
但它只是限制了INNER JOIN的全局结果,而我想限制每个不同tableA.id的结果
我怎样才能做到这一点 ?
谢谢
sql ×6
mysql ×5
database ×2
php ×2
postgresql ×2
arrays ×1
c ×1
cryptography ×1
django ×1
inner-join ×1
innodb ×1
javascript ×1
myisam ×1
pdo ×1
performance ×1
scoring ×1
smallsql ×1