如何用别名mysql选择列值?

时间:2016-07-04 18:28:55

标签: mysql

考虑我的表包含以下数据 表名:测试

+------+-----------+
| id   | commodity |
+------+-----------+
| 123  | apple     |
| 111  | mango     |
| 122  | pen       |
| 211  | mango     |
| 322  | pen       |
| 411  | mango     |
| 222  | pen       |
| 311  | mango     |
| 422  | pen       |
+------+-----------+

对于任何id,我应该从我的表中获取值,如下所示 例如;) 1.for id = 123

+------+----------+
| id   | item     |
+------+----------+
| 123  | fruit    |
+------+----------+

2.for id = 111

+------+----------+
| id   | item     |
+------+----------+
| 111  | fruit    |
+------+----------+

3.for id = 322

+------+-------------+
| id   | item        |
+------+-------------+
| 111  | stationary  |
+------+-------------+

我想获取输入id值的上述结果。

是否可以使用MySQL查询实现此目的?

请帮帮我。

1 个答案:

答案 0 :(得分:2)

如果您在单独的表中有类型,则可以通过这种方式加入

http://sqlfiddle.com/#!9/85fb7/1

SELECT 
  i.id, 
  i.commodity,
  t.item     
FROM test i  
LEFT JOIN my_item_types t # <- here is your table name goes
ON i.id = t.id

或者,根据您的意见,如果您还没有这些信息, 你可以用这种方式将新列添加到当前表中:

http://sqlfiddle.com/#!9/53ff5/1

ALTER TABLE test ADD COLUMN `item_type` VARCHAR(30);

UPDATE test SET item_type ='fruit' WHERE id IN ( 123  ,111  );
UPDATE test SET item_type ='stationary' WHERE id IN ( 322  );

更新所以即使不添加列,您也希望获得该信息?这是违背mysql概念和非常奇怪的目标。但是,有可能:

http://sqlfiddle.com/#!9/1dbf4/2

SELECT 
  i.*,
  IF(i.id IN (111,123),'fruit', IF(i.id = 322,'stationary', null)) item
FROM test i