如果表中没有这样的列,如何选择一些默认值?

时间:2013-08-27 16:25:10

标签: mysql sql

例如,我有一个没有列"类型"的表。但我需要让我的SQL查询具有该列。当我运行查询时出现错误:

SELECT t.foo, t.boo, t.type FROM tabl AS t;

Unknown column 't.type' in 'field list'

我需要像三元运算符这样的东西。我试过这些解决方案,但它们都不起作用:

SELECT f.foo, f.boo, IF(f.type IS NULL, 'x', f.type) AS type FROM tabl AS f
SELECT f.foo, f.boo, (CASE WHEN f.type IS NULL THEN "x" ELSE f.type) AS type FROM tabl AS f

是否有可能实施此类查询?

3 个答案:

答案 0 :(得分:2)

使用类似的东西。假设您要连接2个表行,而其中一个表缺少该列:

   SELECT t.foo, t.boo, t.type FROM tabl1 as t1 

   UNION

   SELECT t.foo, t.boo, NULL as type FROM tabl2 AS t2;

您可以使用字符串“”或您应用程序所需的任何内容替换NULL。

答案 1 :(得分:1)

不幸的是,这不是列的工作方式。如果您需要内省您的表以确定它是否具有此列,那么您可以尝试使用information_schema中的数据来实现此目的。整体听起来像是一种奇怪的方法。为什么不用这个列创建所有表?

答案 2 :(得分:0)

我认为你的意思是你有一个带有条目的表...你的一些条目没有填写“类型”列。要获得默认值,你需要更改你的表。您可以使用phpmyadmin(设置默认值)或通过SQL代码更改它。

这将是以下几点:

CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'London'
)

默认情况下,每个条目的城市都设置为伦敦