UNION ALL之后的WHERE子句

GJ

我有一个名为“ seekers”的表,其中包含人员列表。有一个名为“用户名”的列,其中包含人员的用户名,还有一个名为“ resume_status”的列,其值为0或1。

当前,下面的查询根本不检查“搜索者”表。我希望它仅在“ resume_status”列中显示值为“ 1”的结果。

注意:“ seekers”表中的唯一公用列和值以及下面现有查询中的唯一列和值是“ username”列。我的困惑来自试图弄清楚如何将下面的查询链接到“ seekers”表。

$query="
    (SELECT username, MATCH(highlight) AGAINST (\"{$keywords}\" IN BOOLEAN MODE) AS score FROM resume_highlights HAVING score>0 ORDER by score desc)
    UNION ALL
    (SELECT username, MATCH(skill,skill_list) AGAINST (\"{$keywords}\" IN BOOLEAN MODE) AS score FROM resume_skills HAVING score >0 ORDER by score desc)
    UNION ALL
    (SELECT username, MATCH(education_title,education_organization) AGAINST (\"{$keywords}\" IN BOOLEAN MODE) AS score FROM resume_education HAVING score >0 ORDER by score desc)
    UNION ALL
    (SELECT username, MATCH(employer_title,employer_organization) AGAINST (\"{$keywords}\" IN BOOLEAN MODE) AS score FROM resume_employer HAVING score>0 ORDER by score desc)
    UNION ALL
    (SELECT username, MATCH(volunteer_title,volunteer_organization) AGAINST (\"{$keywords}\" IN BOOLEAN MODE) AS score FROM resume_volunteer HAVING score >0 ORDER by score desc)
";
霍根

@Brijesh的答案很好,但我认为这样做会更快-通过在seekers表上添加一个索引,并在其他表上添加用户名索引,它也会有所改善。..

SELECT * 
FROM
(
  SELECT a.username, MATCH(a.highlight) AGAINST (\"{$keywords}\" IN BOOLEAN MODE) AS score 
  FROM resume_highlights a
  JOIN seekers ON a.username = seekers.username and seekers.resume_status = 1
  HAVING score>0 

    UNION ALL

  SELECT b.username, MATCH(b.skill,b.skill_list) AGAINST (\"{$keywords}\" IN BOOLEAN MODE) AS score 
  FROM resume_skills b
  JOIN seekers ON b.username = seekers.username and seekers.resume_status = 1
  HAVING score >0 

    UNION ALL

  SELECT c.username, MATCH(c.education_title,c.education_organization) AGAINST (\"{$keywords}\" IN BOOLEAN MODE) AS score 
  FROM resume_education c
  JOIN seekers ON c.username = seekers.username and seekers.resume_status = 1
  HAVING score >0 

    UNION ALL

  SELECT d.username, MATCH(d.employer_title,d.employer_organization) AGAINST (\"{$keywords}\" IN BOOLEAN MODE) AS score 
  FROM resume_employer d
  JOIN seekers ON d.username = seekers.username and seekers.resume_status = 1
  HAVING score>0 

    UNION ALL

  SELECT e.username, MATCH(e.volunteer_title,e.volunteer_organization) AGAINST (\"{$keywords}\" IN BOOLEAN MODE) AS score 
  FROM resume_volunteer e
  JOIN seekers ON e.username = seekers.username and seekers.resume_status = 1
  HAVING score >0 

) AS X
ORDER BY SCORE desc

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Union中使用where子句

来自分类Dev

执行UNION时应用WHERE子句

来自分类Dev

抽象出 UNION 中的 WHERE 子句

来自分类Dev

where 子句中的 MySQL 未知列(UNION)

来自分类Dev

有IN子句时如何使用UNION ALL?

来自分类Dev

Presto上的UNION ALL / UNION

来自分类Dev

Cypher / Neo4j-在union子句之后添加约束

来自分类Dev

WHERE子句中UNION和BIND的目的,实现自动编号

来自分类Dev

UNION与带有大WHERE子句的两个查询

来自分类Dev

对 JOIN 和 UNION 以及子查询使用相同的“WHERE”子句

来自分类Dev

SQL-UNION,UNION ALL,INTERSECT,EXCEPT

来自分类Dev

SQL-UNION,UNION ALL,INTERSECT,EXCEPT

来自分类Dev

将Google BigQuery的逗号用作带有IN子句的UNION ALL

来自分类Dev

Neo4j-UNION之后的WHERE,ORDER BY和LIMIT

来自分类Dev

在UNION语句之后在分组行上使用WHERE

来自分类Dev

Neo4j-UNION之后的WHERE,ORDER BY和LIMIT

来自分类Dev

MySQL UNION SELECT和IN子句

来自分类Dev

Mysql中UNION子句的替代

来自分类Dev

Mysql中UNION子句的替代

来自分类Dev

MySQL UNION SELECT和IN子句

来自分类Dev

SQL的UNION子句性能问题

来自分类Dev

ClickHouse Union All例外

来自分类Dev

SQL Union all语句

来自分类Dev

如何使UNION ALL更快?

来自分类Dev

UNION ALL Trick ORACLE

来自分类Dev

Union ALL 带分区

来自分类Dev

Teradata字符串在UNION ALL之后被截断

来自分类Dev

带有 UNION 子句和 WHERE 子句的 VBA-ACCESS DAO SQL

来自分类Dev

Oracle Optimizer issue with UNION ALL