![](/img/trans.png)
[英]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.