- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在通过一组冒险关键字术语查询交易标题表,并在与冒险相关的术语之一出现在标题中时标记相关冒险。为了在最少数量的查询中匹配多个冒险和多个交易,我将其分为两个步骤:
我创建了一个临时表,将每个冒险的所有搜索词加入一个由“|”连接的列中所以我可以在正则表达式中使用它。
将此临时表与 deals.title regexp temp.concatenated 搜索词上的 deals 表连接起来。
效果很好,但我有两个问题:
我可以在不创建临时表的情况下在子查询中执行此操作吗?
我想在我的搜索词表中引入一个状态,将搜索词分类为负面或正面。然后我想搜索交易标题并仅当标题中有一个或多个正面术语并且标题中没有负面术语时才返回匹配项。我不知道如何从同一个表中获取两种不同状态的结果,然后使用这些结果来加入/查询另一个表。我该怎么做呢??我还没有在 sql 中使用变量或存储过程,但看起来这可能是可行的方法?
这是代码的第一部分。
我有一张与冒险相关的搜索词表:
search_terms
id | adventure_id | term
130 124 kitesurf
131 124 kiteboard
132 124 kite surf
133 124 kite-surf
134 124 kite board
135 125 water ski
135 125 waterski
adventures
id | activity
124 Kite boarding
125 Waterskiing
以及与企业相关的交易表
deals
id | title | biz_id ...
3 50% off waterskiing on the lake 10
SQL:
create temporary table tmp1 as
select adv.activity,st.adventure_id, GROUP_CONCAT(st.term SEPARATOR '|') as `match`
FROM (search_terms st)
JOIN adventures adv ON adv.id=st.adventure_id
GROUP BY adv.id;
select d.biz_id, temp.adventure_id, d.id as deal_id
from daily_deals d
JOIN tmp1 temp ON d.title REGEXP temp.match;
现在进入第二个问题。我在 search_terms 表中添加了一个“状态”列,所以 搜索词
编号 | adventure_id |术语 |状态(是或否)
基本上我希望能够说 GROUP_CONCAT(st.term that are status=yes SEPARATOR '|') as **yes**
和 GROUP_CONCAT( st.term (that are status=no) SEPARATOR '|') as **no**
然后在临时表中执行
select d.biz_id, temp.adventure_id, d.id as deal_id
from daily_deals d
JOIN tmp1 temp ON d.title REGEXP temp.yes AND NOT_REGEXP temp.no;
我怎样才能得到这样的结果?感谢您的帮助,这是我第一次使用 SO。
最佳答案
- Can I do this in a subquery without creating a temporary table?
例如,通常您可以用派生查询替换临时表
SELECT d.biz_id,
TEMP.adventure_id,
d.id AS deal_id
FROM daily_deals d
JOIN (SELECT adv.activity,
st.adventure_id,
GROUP_CONCAT(st.term SEPARATOR '|') AS `match`
FROM search_terms st
JOIN adventures adv
ON adv.id = st.adventure_id
GROUP BY adv.id) TEMP
ON d.title REGEXP TEMP.MATCH;
关于mysql - 子查询、临时表、mysql 变量或从一个表的列中获取 pos 和 neg 搜索词以查询另一个的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460362/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!