【问题标题】:MySQL should return row if subquery has no result如果子查询没有结果,MySQL 应该返回行
【发布时间】:2014-11-08 05:43:27
【问题描述】:

我需要一个查询,我正在尝试一些方法来实现它,但仍然无法解决我的问题。我有一个表格和数据存储在一个用逗号分隔的字段中。所以数据看起来像'120,122,145,136'。我称这张桌子为table1

另一个表有 1300 行。我正在尝试获取未包含在 table1 中的行。

这是我写的查询。这无法正常工作。如何得到正确的结果?

SELECT a.ddd FROM table2 a 
 WHERE NOT EXISTS 
      (SELECT id 
       FROM table1 
       WHERE data_separated_comma NOT LIKE '%a.ddd%')

希望有人帮助我。

【问题讨论】:

  • 你能发布一些示例数据吗?

标签: mysql subquery sql-like not-exists


【解决方案1】:

存储逗号分隔的关联确实是一个坏主意,您应该注意更改架构并使用包含表 1 和 2 之间关系的联结表对其进行规范化,对于您当前的问题,您可以使用 @987654322 重写您的查询@

SELECT a.ddd 
FROM table2 a 
left join table1 b
 on(find_in_set(a.ddd,data_separated_comma ) > 0)
 WHERE b.id is null

Database Normalization

【讨论】:

  • 是的,你是对的。我知道,我需要尽快规范化我的表格。不过还是谢谢你。我用你的查询解决了我的问题。回复很快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
  • 2016-08-22
  • 2015-02-25
  • 1970-01-01
相关资源
最近更新 更多