繁体   English   中英

SQL Union查询-多个表

[英]SQL Union query - Multiple tables

我有2个表(项目和文档),都具有ID和Name字段。

我正在寻找满足以下要求的查询:-它将从任何一个表中返回在“名称”字段中指定了单词的行-它将返回3个字段:ID,名称和TableName-其中的表名将是可以是表名或某些标识符

我试过了:

SELECT id, name 
FROM projects UNION SELECT id, name FROM documents
WHERE name like '%querystriong%'

但是此查询不会添加第3个(TableName)字段,而是从Projects表返回在名称字段中具有带有querystring的关联文档的行。

我怀疑我要完全解决这个问题。 有任何想法吗?

您的意思是这样的:

SELECT id, name, 'projects' AS table_name 
FROM projects WHERE name like '%querystriong%' UNION SELECT id, name, 'documents' AS table_name
FROM documents WHERE name like '%querystriong%'

将联合中的每个select视为谨慎查询,其结果集列必须匹配。 这意味着如果要过滤它,每个查询也必须具有WHERE子句。 另外,您可以向每个查询添加文字以说明其来源。

这意味着您的查询应类似于:

SELECT id, name 'projects' AS TableName FROM projects  WHERE name like '%querystring%'
UNION
SELECT id, name, 'documents' AS TableName FROM documents WHERE name like '%querystring%'

或者,您可以将其表示为:

SELECT id, name, tablename FROM (
  SELECT id, name, 'projects' as tablename
  UNION
  SELECT id, name, 'documents' as tablename
) AS combinedtable WHERE name like '%querystring%'

第二个选项可能使您对WHERE子句有更多的控制权,因为此时您无需复制它。

我不确定我是否正确理解了问题,但是此查询可能会有所帮助:

    SELECT id, name, 'projects' as tablename
    FROM   projects
    WHERE  name like '%querysting%'
    UNION
    SELECT id, name, 'documents'
    FROM   documents
    WHERE  name like '%querystring%'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM