我有一个表 A,其中 b 列为 jsonb
b
------------------
{"c": 1}
{"c": 1, "d": 2}
Run Code Online (Sandbox Code Playgroud)
如何为缺少 d 的行构建查询?
SELECT * FROM A WHERE b@>'{"c":1}';
Run Code Online (Sandbox Code Playgroud)
返回所有行,同时
SELECT * FROM A WHERE b@>'{"c":1,"d":null}';
Run Code Online (Sandbox Code Playgroud)
返回无(由于第一行中的 d 不为空);
我的S班有很多A班,有B个。
我可以为我的S(S.As)获得所有A,可以遍历此数组并为每个A获得B。
就像是
S.As.each do |aa|
aa.Bs
end
Run Code Online (Sandbox Code Playgroud)
不使用“每个”怎么办?
我尝试使用这样的占位符进行查询
database.Query("select login,displayname from (select distinct $1+trunc(random()*$2)::integer as id from generate_series($3,$4) g ) r join users using(id) limit 10",min_id,max_id-min_id,min_id,max_id)
Run Code Online (Sandbox Code Playgroud)
它抛出了一个错误:
pq: function generate_series(unknown, unknown) is not unique
Run Code Online (Sandbox Code Playgroud)
然后我找到了一个将查询格式化为字符串的解决方案
query:=fmt.Sprintf("select login,displayname from (select distinct %v+trunc(random()*%v)::integer as id from generate_series(%v,%v) g ) r join users using(id) limit 10",min_id,max_id-min_id,min_id,max_id)
Run Code Online (Sandbox Code Playgroud)
它的工作原理.
我想以正确的方式使它工作,但我不明白为什么它没有.
更新:
var min_id int64
var max_id int64
err:=_database.QueryRow("select min(id),max(id) from users").Scan(&min_id, &max_id)
if err!=nil {
log.Panicf("Failed to get min and max %v",err.Error())
return
}
var rows *sql.Rows
query:=fmt.Sprintf("select login,displayname from (select distinct …
Run Code Online (Sandbox Code Playgroud) 我向我的网络应用程序发出请求,网络应用程序报告了一些错误.没什么复杂的 像这样:
{"password":["can't be blank"]}
Run Code Online (Sandbox Code Playgroud)
它返回代码403.
在我的Android应用程序中,我HttpURLConnection
用来发出请求,我抓住了一个异常白色试图getInputStream
.
在那个例外我可以getResponseMessage()
,但我得到的只是'禁止'
如何获得实际的响应体?
HttpURLConnection urlConnection = (HttpURLConnection)new URL(url).openConnection();
urlConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Firefox/38.0");
try {
String result = IOUtils.toString(urlConnection.getInputStream());
urlConnection.disconnect();
App.SaveToken(result);
}catch(IOException exception){
if (urlConnection.getResponseCode()==403)
{
return urlConnection.getResponseMessage();
}
}
Run Code Online (Sandbox Code Playgroud) postgresql ×2
activerecord ×1
android ×1
children ×1
exception ×1
go ×1
java ×1
json ×1
sql ×1