sql存储过程没有重复的名称

时间:2018-05-25 07:55:45

标签: mysql sql stored-procedures

如何创建查询SELECT ALL DB WITHOUT duplicatelicates

喜欢(不再使用的旧数据库c,f,g。基本上如果它确实有欧元并且具有原始名称而不是相关的):

a
b
c
ceur
d
f
feur
g
geur

我需要它像:

a
b
ceur
d
feur
geur

非常感谢......

3 个答案:

答案 0 :(得分:1)

SELECT DISTINCT

是您正在寻找的。查看更多here

例如,假设您有一个包含以下行的表:

姓名,城市,地址,国家。

您现在希望获得已存储的国家/地区,而不会重复。多人可能来自同一个国家/地区,因此该表格很可能会包含该国家/地区的重复条目。

如何通过使用SELECT DISTINCT实现此目的。

示例:

SELECT DISTINCT country FROM table_name;

这将做的是检索国家行没有重复。这样,您可以看到哪些国家/地区实际存储在该表中而没有重复。

如果您有多个数据库(我不知道您是否获得了这些数据库),那么您将需要在相关表上执行JOIN,因为您可以访问所有数据库。如果你要加入的不只是一张额外的桌子,我建议你做LEFT JOIN。

示例:

SELECT DISTINCT table_name.row_name, table_name.row_name2, table_name.row_name3
FROM table_name
LEFT JOIN table_name2 ON table_name.row_name = table_name2.row_name
LEFT JOIN table_name3 ON table_name2.row_name = table_name3.row_name
[...]
WHERE table.row_name = 'value';

答案 1 :(得分:0)

你可以在select中查询information_schema.TABLES和distinct,加上一个谓词来过滤掉你不想要的东西吗?

答案 2 :(得分:0)

你可以这样做:

select t.*
from t
where name like '%eur'
union all
select t.*
from t
where not like '%eur' and
      not exists (select 1 from t t2 where t2.name = concat(t.name, 'eur');