簡體   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