【问题标题】:select query with multiple tables in sql server在sql server中选择具有多个表的查询
【发布时间】:2011-08-06 15:40:24
【问题描述】:

大家好, 我的 sql server 数据库中有 3 个表。 1. crossarticle_article 有字段:标题 2. blogs_entries 有字段:title 3.forums_posts。有字段:主题

现在我想做的是,我在我的网站上进行搜索,当用户在搜索框中输入任何关键字并点击按钮时,它应该在所有这些表中搜索标题并返回单个结果集。

我怎样才能做到这一点,我使用的是 sql server 2008

【问题讨论】:

  • 编写3个查询并将它们与UNION结合起来。

标签: sql-server-2008 select resultset


【解决方案1】:

类似:

SELECT "article"                  AS type
     , crossarticle_article.id    AS id
     , crossarticle_article.Title AS title_subject
FROM crossarticle_article 
WHERE Title LIKE "%userinput%"

UNION ALL

SELECT "blog entry"               AS type
     , blogs_entries.id           AS id     
     , blogs_entries.title        AS title_subject
FROM blogs_entries
WHERE title LIKE "%userinput%"

UNION ALL 

SELECT "forum post"               AS type
     , forums_posts.id            AS id
     , forums_posts.subject       AS title_subject
FROM forums_posts
WHERE subject LIKE "%userinput%"

【讨论】:

    【解决方案2】:

    UNION 将返回唯一结果,而 UNION ALL 将返回包括重复项在内的所有内容。

    SELECT Title
    FROM crossarticle_article
    WHERE Title = '%term%'
    UNION
    SELECT Title
    FROM blogs_entries
    WHERE Title = '%term%'
    UNION
    SELECT subject AS Title
    FROM forums_posts
    WHERE Title = '%term%'
    

    【讨论】:

    • 感谢您解释UNIONUNION ALL 之间的区别
    【解决方案3】:
    SELECT Title
    FROM crossarticle_article
    WHERE Title = @Title
    
    UNION
    
    SELECT title
    FROM blogs_entries
    WHERE title = @Title
    
    UNION
    
    SELECT subject
    FROM forums_posts
    WHERE subject = @Title
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多