我的数据库中有两个表,我试图比较两个数据库的电话价格。手机型号相同,但拼写不同(正如您在table1(型号)和table2(型号)上看到的那样)。实际上我想检查table2是否有更便宜的型号作为table1并输出为MODEL,PRICE1,PRICE2。
TABLE1
id date manufac model price
1 2016-06-26 SAMSUNG A3 A300F BLACK 187
2 2016-06-26 SAMSUNG A5 A500H BLACK 239
3 2016-06-26 SAMSUNG J5 J300F GOLD 185
TABLE2
id date manufac model price
1 2016-06-26 SAMSUNG A300F A3 180
2 2016-06-26 SAMSUNG A500H A5 232
3 2016-06-26 SAMSUNG J300F J5 GOLD 172
我尝试使用以下查询但没有成功:
SELECT table1.model AS "MODEL",
table1.price AS "PRICE TABLE1",
table2.price AS "PRICE TABLE2"
FROM table1, table2
WHERE table1.model LIKE CONCAT('%', table2.model, '%');
你们有没有想法如何解决这个问题?
答案 0 :(得分:1)
无法编写始终有效的查询。问题在于'模型'在单个字符串类型字段中保存两个或三个不同的值。
这样做的正确方法是拥有" model"," color",以及可能" sub_model"领域。当您想要在模型之间进行比较时,您将执行严格的相等表达式:
SELECT table1.model AS "MODEL",table1.price AS "PRICE TABLE1",table2.price AS "PRICE TABLE2" FROM table1,table2 WHERE table1.model = table2.model
使用现在看起来像这样的表:
TABLE1
id date manufac model color price
1 2016-06-26 SAMSUNG A300F BLACK 187
2 2016-06-26 SAMSUNG A500H BLACK 239
3 2016-06-26 SAMSUNG J300F GOLD 185
TABLE2
id date manufac model color price
1 2016-06-26 SAMSUNG A300F 180
2 2016-06-26 SAMSUNG A500H 232
3 2016-06-26 SAMSUNG J300F GOLD 172
您必须执行数据清理以将这些字段分隔为新字段,然后确保它们在所有新行上也是分开的。