【问题标题】:How to update the WHERE clause to select identical data?如何更新 WHERE 子句以选择相同的数据?
【发布时间】:2013-08-29 13:52:41
【问题描述】:
CREATE TABLE `schedule` (
  `id` smallint(6) NOT NULL AUTO_INCREMENT,
  `aircraftType` varchar(50) DEFAULT NULL,
//...other fields
  PRIMARY KEY (`id`),
) ENGINE=MyISAM AUTO_INCREMENT=5611 DEFAULT CHARSET=latin1;

CREATE TABLE `aircrafts` (
  `id` smallint(6) NOT NULL AUTO_INCREMENT,
  `aircraftType` varchar(50) DEFAULT NULL,
//...other fields
  PRIMARY KEY (`id`),
) ENGINE=MyISAM AUTO_INCREMENT=5611 DEFAULT CHARSET=latin1;

数据库表的示例内容:

表“时间表”

aircraftType = "320"

表“飞机”

aircraftType = "A320"
aircraftType = "A330"

查询:

SELECT *
FROM Schedule F, Aircrafts A
WHERE F.aircraftType = A.aircraftType;

如何更新此查询,以使 aircratf 类型“320”和“A320”在 WHERE 子句中被视为相似?

【问题讨论】:

  • 您是否应该更新相同数据的列?
  • @Mihai 不用,我只需要选择相同的数据,无需进一步更新。

标签: mysql where


【解决方案1】:
 SELECT *
FROM Schedule F, Aircrafts A
WHERE F.aircraftType = A.aircraftType LIKE CONCAT('%', F.aircraftType, '%')

LIKE CONCAT('\"','%', F.aircraftType, '%','\"')-added double quotes.

【讨论】:

    【解决方案2】:

    尝试使用SUBSTRING() 切割第一个字符:

    SELECT *
    FROM Schedule F, Aircrafts A
    WHERE F.aircraftType = SUBSTRING(A.aircraftType, 2)
    

    或者像@Mihai 建议的那样,只需将% 放在其中没有A 的字段上:

    SELECT *
    FROM Schedule F, Aircrafts A
    WHERE CONCAT('%', F.aircraftType) LIKE A.aircraftType
    

    但最好的解决方案是更新相同关系字符串的数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 1970-01-01
      相关资源
      最近更新 更多