Mysql 重写查询-棘手的连接任务

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))) =

这是我的老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))) =
        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,是的,很清楚他目前在做什么,但我看不出有办法知道他对新查询结果的预期。显然,在相同的条件下,您不能进行自联接。