【发布时间】:2018-07-15 06:37:39
【问题描述】:
美好的一天!所有星期五,
我的 sql 查询有问题。我正在使用带有这样子查询的 IN 类
SELECT
cm.category_id,
cd.name
FROM
category_master cm,
category_detail cd,
brand_to_categories b2c
WHERE
cm.category_id = b2c.category_id
AND
cd.category_id = cm.category_id
AND
cd.language_id = 1
AND
cm.status <> 2
AND
cm.category_id IN (SELECT DISTINCT sub_dd.categories FROM distribution_master bdm, distribution_detail bdd, subscription_category_to_brand_user sub_dd WHERE bdd.distribution_id = bdm.distribution_id AND bdm.distributor_id = 35 AND bdd.brand_id = 7191 AND sub_dd.sub_d_id = bdd.id)
AND
b2c.brand_id = 7191;
以下是给我带来问题的子查询。
cm.category_id IN (
SELECT DISTINCT
sub_dd.categories
FROM
distribution_master bdm,
distribution_detail bdd,
subscription_category_to_brand_user sub_dd
WHERE
bdd.distribution_id = bdm.distribution_id
AND
bdm.distributor_id = 35
AND
bdd.brand_id = 7191
AND
sub_dd.sub_d_id = bdd.id)
子查询的结果是这样的。
3913,4517,6059,7137,7138,7139,7140,7141,7144
此结果仅来自目标表中的单行,因为我将这些 id 作为字符串存储在字段中。
现在的问题是,我无法获得所有类别的结果。主查询最终结果只返回category_id为3913的一类信息。但是,如果我使用子查询值而不是子查询手动运行此查询,那么它会返回所有类别结果。
带有子查询值的手动查询是这样的
SELECT
cm.category_id,
cd.name
FROM
category_master cm,
category_detail cd,
brand_to_categories b2c
WHERE
cm.category_id = b2c.category_id
AND
cd.category_id = cm.category_id
AND
cd.language_id = 1
AND
cm.status <> 2
AND
cm.category_id IN (3913,4517,6059,7137,7138,7139,7140,7141,7144)
AND
b2c.brand_id = 7191;
请帮我解决这个问题。
抱歉忘记了,我用的是Mysql
【问题讨论】:
-
2 个问题。 1:这是 mysql 还是 sql-server ?两者都非常不同。 2:你能不能用 ansi join 语法代替这种非常过时的语法。
-
抱歉我忘记了,我用的是Mysql