Mysql 重写查询-棘手的连接任务
这是我的老SQL:Mysql 重写查询-棘手的连接任务,mysql,join,Mysql,Join,这是我的老SQL: SELECT so.samplelist_id FROM sales_flat_order sfo JOIN sales_flat_order_address sfoa ON sfo.entity_id = sfoa.parent_id JOIN samplelist_order AS so ON Concat(Lower(Trim(sfoa.postcode)), Lower(Trim(sfoa.lastname))) =
SELECT so.samplelist_id
FROM sales_flat_order sfo
JOIN sales_flat_order_address sfoa
ON sfo.entity_id = sfoa.parent_id
JOIN samplelist_order AS so
ON Concat(Lower(Trim(sfoa.postcode)), Lower(Trim(sfoa.lastname))) =
Concat(Lower(Trim(so.postcode)), Lower(Trim(so.lastname)))
如您所见,它比较了2个表
、sales\u flat\u order\u address
和samplelist\u order
中的字符串(我知道性能很差)。这很有效。我现在的任务是重写该查询,使其不再使用samplelist\u order
,而是使用sales\u flat\u order\u address
问题是,一个表(sales\u flat\u order\u address
)应该如何将数据与自身进行比较?那有可能吗?这有什么诀窍吗
谢谢 最佳答案-IMHO-编写脚本以建立正常的fk关系,并在应用程序中运行该关系
如果您不能这样做,请在每个表上创建一个额外的字段,其中包含连接的字段和索引,您可以共享您的查询解释结果吗?不清楚您希望以何种方式将此表与自身进行比较。。尽管这样做当然是完全可能的。你想要的结果是什么?你想在输出结果中得到什么?伙计们,阅读代码-他正在加入销售团队\u平面\u订单\u地址和样本列表\u邮政编码和姓氏\u订单concat@jmadsen,是的,很清楚他目前在做什么,但我看不出有办法知道他对新查询结果的预期。显然,在相同的条件下,您不能进行自联接。