MySql,将变量分配给不存在的字段(将值硬编码为列值)

MySql,将变量分配给不存在的字段(将值硬编码为列值),mysql,Mysql,我不确定这是否可行,但例如在这种情况下: SELECT i.name FROM items i INNER JOIN users u ON u.item_id = i.id INNER JOIN sales s ON s.item_id = i.id WHERE u.status = 1 AND s.status = 1 我想将不存在的字段分配给“type”,所以如果记录属于“users”,那么表type=users,otherwize t

我不确定这是否可行,但例如在这种情况下:

SELECT 
  i.name 
FROM
  items i 
  INNER JOIN users u 
    ON u.item_id = i.id 
  INNER JOIN sales s 
    ON s.item_id = i.id 
WHERE u.status = 1 
  AND s.status = 1 
我想将不存在的字段分配给“type”,所以如果记录属于“users”,那么表type=users,otherwize type=Sales

它应该看起来像:

|        name | type  |
|-------------|-------|
|  First Item | User  |
| Second Item | Sales |
| Second Item | User  |

我想这可能就是你想要做的

SELECT i.name,'User' as type FROM items i 
    INNER JOIN users u ON u.item_id = i.id WHERE u.status = 1
UNION
SELECT i.name,'Sales' as type FROM items i 
    INNER JOIN sales s ON s.item_id = i.id WHERE s.status = 1 

以用户和硬编码“用户”作为类型的内部联接项

将sales和硬编码“sales”作为类型的内部联接项


然后将两个选择合并在一起。

内部连接仅在完全匹配时起作用,因此您无法获得显示的结果。谢谢,您的解决方案部分有效,在您的sql FIDLE中,应该显示4条记录,而不是3条。忽略我之前的评论,我所需要的只是全部合并,它工作得非常完美。太感谢你了。所有的联合都可以工作,但我想既然你将一个表中的结果硬编码为“用户”类型,而另一个表中的结果硬编码为“销售”类型,它们永远不应该合并在一起,所以联合就像一个联合一样工作——无论如何,联合都可以工作。。