Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如果表中没有这样的列,如何选择一些默认值?_Mysql_Sql - Fatal编程技术网

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

Mysql 如果表中没有这样的列,如何选择一些默认值?,mysql,sql,Mysql,Sql,例如,我有一个没有列“type”的表。但是我需要让我的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 S

例如,我有一个没有列“type”的表。但是我需要让我的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

有可能实现这样的查询吗?

不幸的是,这不是列的工作方式。如果需要内省表以确定表中是否有此列,则可以尝试使用信息模式中的数据来获取此列。总的来说,我觉得这是一种奇怪的方法。为什么不创建包含此列的所有表呢?

使用类似的方法。假设要联接两个表行,但其中一个缺少列:

   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。

我想您的意思是,您有一个包含条目的表。。。您的某些条目没有填写“类型”列。要使用默认值,您需要更改表。您可以使用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'
)

这会将每个条目的城市默认设置为伦敦

为什么要尝试查询不存在的列?我的系统的设计需要“类型”列。但有时我得到的表没有“type”列。因此,在这种情况下,我希望有一些默认值。在这种情况下,在您的设计中有一个基本的缺陷<代码>为什么不使用此列创建所有表?好主意,谢谢。我想的方向不同,不完全是这样。我的一些表根本没有列“type”。我知道如何在列上设置默认值。不过,谢谢你。