【问题标题】:Mysql concat unequal table fieldMysql concat 不等表字段
【发布时间】:2019-03-12 12:24:15
【问题描述】:

为什么我不能选择具有不等 concat 结构的表格行?我给你举个例子。

表1

| 身份证 | 面积 |

| 1 | items_labeling_small |

| 2 | items_labeling_big |

表2

| 身份证 | 面积 | 凯特 |

| 1 |小|标记 |

| 2 |大|标记 |

SELECT Table1.area FROM Table1, Table2 WHERE Table1.area != CONCAT('items_', Table2.kat, '_', Table2.area)

不必显示任何结果,因为两者都与 concat 结构匹配。但它们显示在结果中。我不知道为什么......以及如何更改它的工作查询。

【问题讨论】:

  • 请停止使用基于逗号的古代连接方法。请改用显式 join 语法。
  • 另外,在您的代码中添加and table1.id = table2.id

标签: php mysql select concat


【解决方案1】:

显示它们是因为每一行都不匹配,所以你有不匹配的行

    SELECT Table1.area 
    FROM Table1
    INNER JOIN Table2 ON  Table1.area != CONCAT('items_', Table2.kat, '_', Table2.area)

你可能想要一个不在

    SELECT Table1.area 
    FROM Table1 
    where  Table1.area NOT IN (

        SELECT CONCAT('items_', Table2.kat, '_', Table2.area)

        FROM Table2

    )

作为一个建议,你不应该使用基于 where 子句的(旧的)隐式 join sintax ...使用显式 join sintax ..

【讨论】:

  • 你成就了我的星期天!谢谢@scaisEdge
猜你喜欢
  • 1970-01-01
  • 2017-04-02
  • 2012-06-03
  • 1970-01-01
  • 2013-01-09
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
相关资源
最近更新 更多