【问题标题】:SQL: If some rows in column returns null, then query againSQL:如果列中的某些行返回null,则再次查询
【发布时间】:2013-10-07 23:02:37
【问题描述】:

我需要在“URL”列上将 2 个表连接在一起,但是由于我们后端的一些疯狂问题,两个表中的 URL 记录不一致(斜杠/无斜杠):http://google.com/ vs .http://google.com.

在我运行查询加入后,我得到:

URL                     DATE
http://facebook.com     20130914
http://google.com/      NULL
http://youtube.com/     NULL

我是 SQL 的初学者,但是 SQL 是否有类似运行查询后,如果列中的项目为空,然后再次运行查询?

我发现How to ignore trailing slash while joining two string columns in SQL 然后我可以修改第二个查询以删除尾部斜杠(如果存在)。

【问题讨论】:

  • 您的查询是什么样的?为什么不使用 rtrim(col,'/') 加入?效率不高,但可能比查询两次更有效。
  • @BarbaraLaird:原因是因为我只想在第一遍返回 null 的情况下进行 rtrim
  • SELECT DISTINCT b.url AS url, a.date AS date FROM url_results a LEFT OUTER JOIN url_samples b ON b.url = a.url;

标签: sql


【解决方案1】:

不幸的是,您最好的最佳做法是清理数据并在插入时对其进行规范化。这里的问题是您正在使用此数据执行连接。从性能的角度来看,任何解决方法都将非常低效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多