【问题标题】:sql stored procedure with out duplicates name没有重复名称的sql存储过程
【发布时间】:2018-05-25 07:55:44
【问题描述】:

如何创建查询以选择所有数据库而不重复

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

a
b
c
ceur
d
f
feur
g
geur

我需要它是这样的:

a
b
ceur
d
feur
geur

非常感谢...

【问题讨论】:

  • 你试过什么?你想要什么?有点不清楚你在问什么......
  • 我想过滤数据库,这样它会选择一个包含所有数据库但没有重复的表

标签: mysql sql stored-procedures


【解决方案1】:

选择不同的

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

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

姓名、城市、地址、国家/地区。

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

如何实现这一点是通过使用 SELECT DISTINCT。

例子:

SELECT DISTINCT country FROM table_name;

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

如果您有多个数据库(我不知道这是否是您所得到的),那么您将需要对相关表执行 JOIN,因为您可以访问所有这些表。如果您要加入的不仅仅是 1 个额外的表,我建议您进行 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';

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 是的,但它是对一个非常模糊的问题给出确凿的答案。我没有架构,什么都没有。我所能做的就是简单地给出如何在 sql 语句中获取不同(非重复)值的答案。
  • 提供了一个例子。
  • 我真的应该停止为不完整的问题提供答案。它所做的只是给你投反对票。真的很丢脸。
  • 如果没有 50 个代表,您甚至无法评论 OP 的帖子以进行详细说明。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    你可以这样做:

    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');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 2010-12-14
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 2014-12-31
      相关资源
      最近更新 更多