1

我得到以下声明:

SELECT id FROM record_database WHERE id = <up to me to complete the statement>

记录数据库有不同的字段,其中有id和name。

我应该完成这个 select 语句,以便它并排显示所有 id 和所有相应的名称,这应该使用这一行 SQL 代码来完成。给出了可以使用 UNION 或 OR 的提示。

我尝试了以下变体:

SELECT id FROM record_database WHERE id = '*'
UNION
SELECT name FROM record_database WHERE name = '*';

但这些都不起作用。我尝试使用 AND 执行此操作,尝试使用显示列,但这些也不起作用。

任何帮助,将不胜感激。

4

4 回答 4

1

这闻起来很像家庭作业,所以我不会提供完整的答案,但你不能只是联合查询返回不同的结果集。我推断 ID 是一个整数,而 NAME 是一些 varchar,它不会像您在提示中列出的那样联合。

当您说“完成”时,您是否仅限于将内容添加到末尾?如果是这样,它是一个非首发。您不能仅通过向“WHERE”子句添加内容来增加返回的字段列表。您需要将内容添加到实际的字段列表中以使其返回,因此您可能会澄清您是否真的仅限于附加到您给出的查询中。

于 2012-09-16T19:26:36.777 回答
1

作弊。使选择返回 0 行并添加另一个将显示 2 列的行。都在同一行:

SELECT id FROM record_database WHERE id = NULL;SELECT id,name FROM record_database;

不应再将时间浪费在此类愚蠢的问题上。


如果两者id都是namechar(或 varchar),您也可以这样做,将两列合并为一列:

SELECT id FROM record_database WHERE id = NULL
UNION ALL
SELECT id || '--' || name FROM record_database ;

id || '--' || name部分与一个 DBMS 不同。在某些情况下,+是 concat 运算符,在其他情况下,还有特殊功能。所以你可能需要使用:

id  + '--'  + name

或者:

CONCAT(id, '--', name)
于 2013-05-09T06:51:44.367 回答
1

如果您正在寻找:

id
name
id next
name next

然后使用这个技巧:

SELECT col2 
FROM (
    SELECT id, col2=convert ( varchar (size of name field),id) 
    FROM table 
    WHERE ....

    UNION ALL

    SELECT id, name 
    FROM table 
    WHERE ....
     ) 
ORDER BY id

order by将使 id 和 name 并排显示,col2 将在第一行包含 id,在第二行包含 name。

于 2012-09-16T21:38:16.207 回答
0

尝试这个

SELECT * FROM record_database WHERE id = '*' OR name = '*'
于 2012-09-16T19:31:30.087 回答