如何解决如何使用LIKE运算符为多个值以及还使用LIMIT编写SQL查询
我想用LIKE运算符编写SQL查询几个值,也要使用LIMIT。所以,当我尝试这个:
var xpath1 = "//div[@aria-label='Add food' and data-tooltip='Add food']/span"
webDriver.findElement<WebElement>(By.xpath(xpath1)).click()
我没有两个值。我得到具有两行的数据帧,其中两行中的消息相等,是由user1发出的请求。我怎么写正确?
期望的结果是:
SELECT class,message
FROM my_data
WHERE message LIKE '%request was made%' AND message LIKE '%received an answer%'
LIMIT 2
我以后使用此r代码:
class message
request request was made by user1
received received an answer by user114
我的数据如下:
df <- dbGetQuery(dbConnect(...),stri_encode(sql,to = "UTF-8")) %>%
as.data.frame()
解决方法
考虑使用neighbor功能:
SELECT result.1 as class,result.2 as message
FROM (
SELECT arrayJoin([(class,message),(next_row_class,next_row_message)]) as result
FROM (
SELECT class,message,neighbor(class,1) next_row_class,neighbor(message,1) next_row_message
FROM (
/* emulate origin data */
SELECT data.1 as date,data.2 as class,data.3 as message
FROM (SELECT arrayJoin(
[('2020-11-01','request ','request was made by user1'),('2020-11-01','received','received an answer by user114'),'request','request was made by user45'),'error','error with messages occurred'),'request was made by user413'),'received an answer by user056'),'received an answer by user77'),'update','data was updated')]) as data))
)
WHERE message LIKE '%request was made%' AND next_row_message LIKE '%received an answer%'
)
LIMIT 2
/*
┌─class────┬─message───────────────────────┐
│ request │ request was made by user1 │
│ received │ received an answer by user114 │
└──────────┴───────────────────────────────┘
*/
,
你们都需要
- 将
AND
替换为OR
;和 - 包括限制为
user1
的逻辑,它必须在查询中。
我将演示使用sqldf
只是为了获得快速的sql查询,但这在任何DBMS中都适用。
sqldf::sqldf(
"select * from df
where message like '%user1%'
AND (
message LIKE '%request was made%'
OR message LIKE '%received an answer%'
)
limit 2")
# date class message
# 1 2020-11-01 request request was made by user1
# 2 2020-11-01 received received an answer by user114
数据:
df <- structure(list(date = c("2020-11-01","2020-11-01","2020-11-01"),class = c("request","received","request","error","update"),message = c("request was made by user1","received an answer by user114","request was made by user45","error with messages occurred","request was made by user413","received an answer by user056","received an answer by user77","data was updated")),row.names = c(NA,-10L),class = "data.frame")
,
也许您需要这样的东西?
NumberFormatException
,
尝试以下操作:
SELECT DISTINCT class,message
FROM my_data
WHERE message LIKE '%request was made%'
OR message LIKE '%received an answer%'
LIMIT 2
我在想DISTINCT可以保留重复的类,消息组合以显示在输出中。另外,您还需要一个OR或一个AND,因为没有一条记录可以同时满足这两个条件(至少在您显示的示例数据中)。
注意-在每种情况下都行不通,因为在您收到“收到答案”之前,您可能有两个不同的“请求”。
,只需将AND替换为OR,您的查询将为:
SELECT class,message
FROM my_data
WHERE message LIKE '%request was made%' OR message LIKE '%received an answer%'
LIMIT 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。