所以我有一个相当简单的查询,如下所示:
SELECT * FROM tbl_product
LEFT JOIN tbl_product_subject ON tbl_product_subject.product_id = tbl_product.id
WHERE tbl_product.type = 5
ORDER BY tbl_product.id DEC
而这种作品,它会给我多少行,tbl_product_subject
通过tbl_product
字段的重复来索引。
这不是我想要的。
我希望每个tbl_product
字段只有一行,并在该记录中迭代tbl_product_subject
详细信息连接,但为了使事情变得更加困难,而不是作为逗号消除列表来减少单个字段。
相反,我想要每个详细连接结果的字段,例如:
tbl_product.id
123
tbl_product_subject.id1
1
tbl_product_subject.id2
2
tbl_product_subject.id3
3
tbl_product_subject.id4
4
这可能吗?
正如注释中已经提到的end,您可以通过使用联合(全部)来实现所需的结果:
(
SELECT
p.id AS id,
p.id AS pid
FROM
tbl_product p
)
UNION ALL
(
SELECT
s.id AS id,
s.product_id AS pid
FROM
tbl_product_subject s
)
ORDER BY pid, id;
如果需要,还可以添加一些"标签"(我用它们进行"调试"):
(
SELECT
CONCAT("prod: ", p.id) AS id,
p.id AS pid
FROM
tbl_product p
)
UNION ALL
(
SELECT
CONCAT("sub: ", s.id) as id,
s.product_id AS pid
FROM
tbl_product_subject s
)
ORDER BY pid, id;