SQL:每个ID都有重复项,我希望将ID保留为非空白的站点

时间:2015-11-17 15:58:10

标签: mysql sql

ID        Site
a         www.google.com
a         
b         www.qq.com
b         
c         www.hodes.com
.
.
.

我有一个像上面那样的表,我想提取的网站值不是空白的,例如:

ID        Site
a         www.google.com
b         www.qq.com
c         www.hodes.com

5 个答案:

答案 0 :(得分:0)

select * from table where Site <> '' or Site is not null 如果空白的那些总是重复,那么它将起作用。

,否则

select max(id), max(site) from table group by id

应该没问题

答案 1 :(得分:0)

您只需检查列网站的内容是否为空。要选择包含内容的行:

SELECT * FROM TABLE_NAME WHERE SITE IS NOT NULL

了解更多here

答案 2 :(得分:0)

select
  ID,
  max(if(trim(site) = '', null, site)) as site
from tbl
group by ID
;

如果每个ID有多个网站,则可以将GROUP_CONCAT替换为最大值。

答案 3 :(得分:0)

我会想到要从数据库中删除空行。如果情况并非如此,只需将where子句移动到Select语句。

Delete from TableName where ISNULL(Site, '')=''

答案 4 :(得分:0)

如果你必须为每个id返回一个且只有一个记录,那么你的代码必须 应对每个id的潜在多个记录 - 你需要max()和group by。 我建议:

    Select id, max(site)
    from table_name
    where nvl(site,0) <> 0
    group by id        

否则,如果您知道您从未遇到过具有相同ID的多个记录:

    Select id, site
    from table_name
    where nvl(site,0) <> 0