我有一个表,其中 id、product_type、product_id、quantity 列都是整数。我需要根据 product_type 从另一个表中选择数据。例如。如果 product_type 为 0,则从 tableA 中选择,如果 product_type 为 1,则从 tableB 中选择等。我试图找到如何创建选择但未成功的解决方案。有人能帮助我吗。我感谢每一个帮助。谢谢你。
问问题
1446 次
2 回答
3
将主表与各个产品表连接起来,但使用左连接并product_type = x
在连接条件中包含过滤器,以便实际连接所需的记录。
这将产生许多NULL
值;用于coalesce
获取输出的非NULL
值:
SELECT sales.id,
sales.quantity,
sales.product_type,
coalesce(tableA.name, tableB.name) AS name,
coalesce(tableA.color, tableB.color) AS color,
tableA.numberOfAs -- is NULL for other product types
FROM sales
LEFT JOIN tableA ON sales.product_type = 0 AND
sales.product_id = tableA.product_id
LEFT JOIN tableB ON sales.product_type = 1 AND
sales.product_id = tableB.product_id
WHERE ...
于 2013-02-20T19:11:52.867 回答
0
听起来你需要一个 CASE 声明
SELECT
CASE
WHEN product_type = 1 THEN (SELECT column FROM table1 WHERE ...)
WHEN product_type = 2 THEN (SELECT column FROM table2 WHERE ...)
END
FROM table
使用 JOINS 可能会提高效率,但这取决于您的架构。
于 2013-02-20T16:47:53.943 回答