考虑我的表包含以下数据 表名:测试
+------+-----------+
| 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查询实现此目的?
请帮帮我。
答案 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