如何从Users与Admin两张表中查询指定姓名条件的数据?
嘿,这个需求很清晰,咱们直接上解决方案:
正确的SQL实现方式
要拿到两张表中所有符合firstname = 'Alex' AND surname = 'Edison'的记录(保留重复的那条,最终返回2条),关键是用**UNION ALL**而不是普通的UNION——因为UNION会自动去重,会把两个表的同一条记录合并成一个,就达不到你要2条结果的要求了。
具体SQL语句如下:
-- 查询Users表中匹配的记录 SELECT id, firstname, surname FROM Users WHERE firstname = 'Alex' AND surname = 'Edison' -- 用UNION ALL拼接Admin表的匹配记录,不做去重 UNION ALL -- 查询Admin表中匹配的记录 SELECT id, firstname, surname FROM Admin WHERE firstname = 'Alex' AND surname = 'Edison';
关键说明
UNION ALL:仅仅是将两个查询的结果集直接拼接,不会对重复记录做去重处理,正好符合你需要返回2条结果的预期;- 如果误用
UNION,会自动去除重复的行,最终只会返回1条记录,不符合需求。
执行这条语句后,你会得到两条记录:一条来自Users表(id=1, Alex Edison),另一条来自Admin表(id=1, Alex Edison)。
内容的提问来源于stack exchange,提问作者zagzter




