【问题标题】:Compare result of query in one table and report "True" or "False"在一张表中比较查询结果并报告“True”或“False”
【发布时间】:2018-12-29 12:57:33
【问题描述】:

我在 mysql 中有一个表,其中包含一些 NE 的大量数据。我想创建一个比较列的值并将报告为“True”或“False”的报告。

下表是我的查询的一部分,我想获取T1和T2的所有数据并比较值coulmn,它是相同的,在新列中输入“True”,否则”输入“False”。

+------------+----------+-----------------+-------------------------------------------------------------+--------------+
| date       | rnc      | mo              | parameterid                                                 | Value        |
+------------+----------+-----------------+-------------------------------------------------------------+--------------+
| 2018-07-11 | T1       | INTERRATHOCOV   | INTERRATCSTHD2DECN0                                         | -17          |
| 2018-07-11 | T2       | INTERRATHOCOV   | INTERRATCSTHD2FECN0                                         | -14          |
| 2018-07-11 | T1       | UMULTIRABHOCOV  | CSPSMRABTHD2DECN0                                           | -15          |
| 2018-07-11 | T2       | UMULTIRABHOCOV  | CSPSMRABTHD2FECN0                                           | -12          |
| 2018-07-17 | T1       | CORRMPARA       | PERFENHANCESWITCH9_PERFENH_NON_CS_RAB_RELOC_OPT_SW          | 0            |
| 2018-07-17 | T2       | CORRMPARA       | PERFENHANCESWITCH9_PERFENH_NON_PS_RAB_RELOC_OPT_SW          | 0            |
| 2018-07-19 | T4       | CORRMPARA       | PERFENHANCESWITCH9_PERFENH_NON_CS_RAB_RELOC_OPT_SW          | 0            |
| 2018-07-19 | T4       | CORRMPARA       | PERFENHANCESWITCH9_PERFENH_NON_PS_RAB_RELOC_OPT_SW          | 0            |
+------------+----------+-----------------+-------------------------------------------------------------+--------------+

【问题讨论】:

  • 什么是网元?比较值列但将其与什么进行比较?
  • t1 和 t2 行使用 mo 或 parameterid 列关联??
  • parameterid for one mo 可能超过 1,我想将 (T1-INTERRATHOCOV-INTERRATCSTHD2DECN0-Value) 与 (T2-INTERRATHOCOV-INTERRATCSTHD2DECN0-Value) 进行比较

标签: mysql


【解决方案1】:

您是否尝试过将表与自身连接起来?

SELECT Table1.date, Table1.mo, Table1.parameterid, 
  IF(Table1.value = Table2.value, "True", "False") AS compare
FROM myTable AS Table1
LEFT JOIN myTable AS Table2 ON Table1.date = Table2.date AND Table1.mo = Table2.mo
  AND Table1.parameterid = Table2.parameterid AND Table1.rnc <> Table2.rnc

【讨论】:

  • 但是速度有问题,3000人的桌子速度很慢,需要5分钟,有什么办法可以加快速度吗?
  • 是的 - 您可以在列上创建索引。但是,最好将列从 VARCHAR 转换为 INTEGER 并将文本值存储到查找表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 2020-11-14
相关资源
最近更新 更多