[英]SQL Query union two tables, search multiple columns by multiple keywords
[英]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.