mysql - 如何合并 SQL SELECT 字段

标签 mysql sql select

我有一个带有 ENUM 的 MySQL 表。由于有时我不得不更改此 ENUM,因此我将其转移到另一个表。现在我必须创建一个语句,它将在一个选择字段中为我提供枚举/新表的名称。

表1(瓶):

id    | size      | size_id
1     | small     | (NULL)
2     | medium    | (NULL)
3     | big       | (NULL)
4     | (NULL)    | 1
5     | (NULL)    | 2
6     | (NULL)    | 3

表 2(bottle_size):

id    | name
1     | small
2     | medium
3     | big

选择:

SELECT id, <dontknow> as size
FROM bottle b
LEFT JOIN bottle_size bz ON b.size_id = bz.id
WHERE size = 'small';

我该怎么做?

谢谢

最佳答案

您可以使用 IFNULL()如果第一个字段不是 NULL,则选择第一个字段,否则选择第二个字段。因为这会导致动态字段(“大小”),所以您需要使用 HAVING 而不是 WHERE 来添加条件:

SELECT b.id, IFNULL(b.size, bz.name) AS size
FROM bottle b
LEFT JOIN bottle_size bz ON b.size_id = bz.id
HAVING size = 'small';

演示:http://sqlfiddle.com/#!2/9e2df/3

关于mysql - 如何合并 SQL SELECT 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15544768/

相关文章:

mysql - 您可以对 SHOW COLUMNS 或 DESC 的输出进行排序吗?

c++ - epoll vs select 用于非常少量的连接

mysql - 比较两个相同的表 MySQL

php - Silverstripe 管理页面未出现

mysql - 如何: SQL Query - INNER JOIN with LIMIT 1 on the secondary table?

MySql 使用嵌套查询检查最旧的记录与当前记录

sql - 如何通过查询一行中的特定字段来计算成本

php - 将数据上传到 MySQL 数据库时出现问题

mysql复杂查询,group by with limit

mysql - 自定义自增列