MySQL - 如何通过比较select查询中的两个字段来查找特定字段

时间:2015-02-07 06:52:44

标签: mysql sql select join

我有这两个表:

subscription (TABLE)
    subscription_id int (10)
    user_id int (10)
    property_id int (10)
    subscription_plan_id int (10)
    active BIT ()
    start_date timestamp ()
    end_date date ()

subscription_plan (TABLE)
    subscription_plan_id int (10)
    plan_name varchar (100)
    plan_month int (10)
    description varchar (500)
    plan_for char (1)
    price float (12)
    parent_id int (10)

我编写了这个select SQL查询来从两个表中获取数据:

SELECT subscription. * , subscription_plan.plan_name, subscription_plan.plan_month, subscription_plan.parent_id
FROM subscription
JOIN subscription_plan ON subscription.subscription_plan_id = subscription_plan.subscription_plan_id
WHERE subscription.user_id =71
AND subscription.property_id =981
ORDER BY subscription.subscription_plan_id ASC
LIMIT 0 , 30

我得到了这些结果:

enter image description here

现在我再次希望通过比较parent_idsubscription_plan_id以及匹配的过滤计划名称来获取计划名称。

检查下图,看看我想做什么:

enter image description here

供参考: enter image description here

这是我的SQL小提琴:http://sqlfiddle.com/#!2/01727e/1/0

知道怎么做吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT DISTINCT sub . * , t2.plan_name, t2.plan_month, t1.plan_name, t2.parent_id
FROM subscription_plan AS t1
LEFT JOIN subscription_plan AS t2 ON t2.parent_id = t1.subscription_plan_id
JOIN subscription AS sub ON t2.subscription_plan_id = sub.subscription_plan_id
WHERE t2.plan_name IS NOT NULL
AND sub.user_id =71
AND sub.property_id =981
ORDER BY sub.subscription_plan_id ASC 

我希望它有效

答案 1 :(得分:0)

您需要like

SELECT mytable.*, sp.plan_name AS 'parent_plan_id'
FROM (SELECT subscription. * , subscription_plan.plan_name, subscription_plan.plan_month, subscription_plan.parent_id as "new_parent_id"
FROM subscription
JOIN subscription_plan ON subscription.subscription_plan_id = subscription_plan.subscription_plan_id
WHERE subscription.user_id =71
AND subscription.property_id =981) AS mytable 
INNER JOIN subscription_plan sp
ON mytable.new_parent_id = sp.parent_id
AND mytable.plan_month = sp.plan_month
相关问题