mysql - 我们可以使用 like 运算符并选择查询作为其输入吗?

标签 mysql subquery sql-like

如何使用 LIKE 运算符进行字符串搜索,并且该字符串将作为另一个 select 语句的输出?

SELECT CONCAT('"id":"',transactions.Id,'"')  AS id
FROM transactions.transactions LEFT JOIN
report.PlayerTransaction
ON (transactions.Id=PlayerTransaction.TranId )
WHERE TranId IS  NULL AND  transactions.created_at > '2017-10-15' ;

SELECT *
FROM report.EtlServiceErrorLog 
WHERE Topic = 'player' and  ErrorSourceData like  xxxx and
CreatedDate > '2017-10-15' ;

考虑这两个查询;我希望查询的写法如下:

SELECT *
FROM report.EtlServiceErrorLog 
WHERE Topic = 'player' and
      ErrorSourceData like in (SELECT CONCAT('"id":"', transactions.Id, '"')  AS id
                               FROM transactions.transactions LEFT JOIN
                                    report.PlayerTransaction
                                    ON (transactions.Id = PlayerTransaction.TranId ) WHERE TranId IS  NULL AND  transactions.created_at > '2017-10-15'
                             ;) and
      CreatedDate > '2017-10-15' ;

或者我必须获得循环的帮助吗?请给我举个例子。

最佳答案

看来你真的很想找

ErrorSourceData LIKE CONCAT('%"id":"', t.Id, '"%')

这不能用 IN 来完成。您需要EXISTS

SELECT *
FROM report.EtlServiceErrorLog sel
WHERE Topic = 'player' 
AND EXISTS
(
  SELECT *
  FROM transactions.transactions t
  WHERE t.id NOT IN (SELECT pt.TranId FROM report.PlayerTransaction pt)
  AND t.created_at > '2017-10-15'
  AND sel.ErrorSourceData LIKE CONCAT('%"id":"', t.Id, '"%')
)
AND CreatedDate > '2017-10-15' ;

关于mysql - 我们可以使用 like 运算符并选择查询作为其输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47180132/

相关文章:

mysql - 限制 SELECT 结果中长文本字段的长度

python - MySQL-python 已经安装但仍然有 "ImportError: no module named MySQLdb"错误

mysql - 在数据库中使用子查询是更好的做法吗?

SQLite子查询语法/错误/与MySQL的区别

php - 如何添加 case 语句以在每条记录后添加 break?

php - 从多个表中获取数据 SQLite

c# - MySQL远程连接打开时间过长影响C# winform应用程序

mysql - 如何将子查询中的字符串连接到 MySQL 中的单行中?

entity-framework - 我可以使Entity Framework使用sqlite的LIKE代替instr()吗?

php - 在 mysql 中搜索单个单词