簡體   English   中英

如何結合兩個查詢sql?

[英]how to combine the two queries sql?

美好的一天。

我有兩個SQL查詢:

第一:

SELECT name FROM 
TableOne
WHERE city='3452' AND firm='49581' AND service='2'
Group by name

第二:

SELECT name FROM 
TableTwo
WHERE city='3452' AND firm='49581' AND service='2'
Group by name

請告訴我如何組合兩個查詢sql並從兩個表中選擇所有名稱(按名稱分組)?

您可以使用UNION ALL http://sqltutorials.blogspot.com/2007/06/sql-union-all.html

SELECT name
FROM (
    SELECT name 
    FROM TableOne
    WHERE city='3452' AND firm='49581' AND service='2'
    UNION ALL
    SELECT name 
    FROM TableTwo
    WHERE city='3452' AND firm='49581' AND service='2' ) x
GROUP BY name

只需在兩個查詢之間使用UNION運算符。 根據這個類似問題的答案:

您可能正在查詢中使用UNION:

Select * from a UNION Select * from b Note:

最好對列名進行限定,而不要使用*引用。 如果您的兩個表進行了架構更改,但您仍想撤回兩個表共有的所有數據,這也將使查詢仍然有用。

Union將排除相同的對象。 為避免這種情況,您可以改用UNION ALL

好吧,“組合”可能意味着很多事情,但是我猜您想要這樣的東西:

SELECT name
FROM (
    SELECT name, city, firm, service FROM TableOne
    UNION ALL
    SELECT name, city, firm, service FROM TableTwo
) Q
WHERE city='3452' AND firm='49581' AND service='2'
GROUP BY name

無需使用UNION(不帶ALL),因為GROUP BY仍會刪除重復項。

順便說一句,WHERE子句中使用的所有這些字段是否真的是字符串? 如果不是,則需要刪除單引號。 您使用的僅包含數字的字符串文字有點可疑。

我相信此語法會更簡單一些,因此更易於維護。 第二行中的逗號進行聯接。

SELECT name FROM 
TableOne, TableTwo
WHERE city='3452' AND firm='49581' AND service='2'
Group by name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM