SELECT *
FROM products2tecspecs as p2t, products_tecspecs as pt
WHERE p2t.fk_product_id = '%s' AND pt.pts_id = fk_tecspec_id AND pt.pts_id
IN (5275, 21, 5276, 5277, 5278, 49, 5279)
ORDER BY FIELD(pts_id, 5275, 21, 5276, 5277, 5278, 49, 5279)
我有这个选择,我可以在其中找到特定的 ID 并按照我想要的顺序将其带入。但我对这种关系有疑问。我在 foreach 函数中使用它,我需要 7 个循环。问题不是空值,问题是它只带来了相关的产品。当然这不是问题,感谢上帝,它发生了,但在我的情况下,如果它只有 2 个,它就会破坏布局。
有没有办法可以做类似的事情:如果找不到字段,请将其放置到位?
如果我创建关系,它可以工作,但我需要用 700 个产品来做......
我找到了这个,但它似乎不是一个 NULL 问题......
我也尝试使用 LEFT JOIN 但正如我所说,如果关系不存在,它不能带来 NULL ...
我瞎了
我找到了这个SELECT pts_name
FROM (
SELECT pts_name,
CASE pts_id
WHEN 5275
THEN 1
WHEN 21
THEN 2
WHEN 5276
THEN 3
WHEN 5277
THEN 4
WHEN 5278
THEN 5
WHEN 49
THEN 6
WHEN 5279
THEN 7
END AS sort_order
FROM products_tecspecs
WHERE pts_id
IN ( 5275, 21, 5276, 5277, 5278, 49, 5279 )
)a
ORDER BY a.sort_order ASC
。它带来了我想要的选择,但仍然找不到实现我的目标的方法......
加入
SELECT *
FROM products2tecspecs AS p2t
LEFT JOIN products_tecspecs AS pt ON ( p2t.fk_tecspec_id = pt.pts_id )
WHERE p2t.fk_product_id =34
AND pt.pts_id
IN ( 5275, 21, 5276, 5277, 5278, 49, 5279 ) OR p2t.p2t_value IS NULL
ORDER BY FIELD( pts_id, 5275, 21, 5276, 5277, 5278, 49, 5279 )
LIMIT 40
但没有用。它带来了超出IN
所选领域的结果。