美好的一天。
我有两个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并从两个表中选择所有名称(按名称分组)?
答案 0 :(得分:1)
您可以使用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
答案 1 :(得分:1)
在两个查询之间使用UNION
运算符。根据{{3}}中的回答:
您可能正在查询在查询中使用UNION:
Select * from a UNION Select * from b Note:
这是更好的做法 限定列名而不是使用*引用。这个会 如果您的两个表经历了模式,也会使查询仍然有用 更改,但您仍然想要拉回两个表的所有数据 有共同点。
Union
将排除相同的对象。为避免这种情况,您可以改为使用UNION ALL
。
答案 2 :(得分:1)
嗯,“结合”可能意味着很多事情,但我猜你想要这样的东西:
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无论如何都会删除重复项。
BTW,WHERE子句中使用的所有字段都是真正的字符串吗?如果没有,您需要根据需要删除单引号。您使用仅包含数字的字符串文字有点可疑。答案 3 :(得分:0)
我相信这种语法更简单,因此更容易维护。第二行中的逗号进行连接。
SELECT name FROM
TableOne, TableTwo
WHERE city='3452' AND firm='49581' AND service='2'
Group by name