如何从条件中的两个不同列中进行选择,并从SQL中连接它们

如何从条件中的两个不同列中进行选择,并从SQL中连接它们,sql,join,Sql,Join,我期待加入两列作为一个单一的。。。这里有一个想法 ======================================================= id | firstname | lastname ======================================================= 1 | Peter | Das -----------------------------------------------

我期待加入两列作为一个单一的。。。这里有一个想法

=======================================================
    id  | firstname  |        lastname
=======================================================
    1   | Peter      | Das
-------------------------------------------------------
    2   | Das        | James
-------------------------------------------------------
    3   | vector     | Call
______________________________________________________________
    4   | cans       | Das
sql查询应该如下所示(伪代码)

结果集应该是这样的

    ======================
        name
    ======================
        cans
    ---------------------------------------
        James
    ---------------------------------------
        Peter
现在谁能告诉我确切的问题是什么


每一个想法、提示和建议都是受欢迎的

看起来像是一个工会的工作查询

SELECT id, firstName AS name
FROM table
WHERE lastName = 'Das'
UNION ALL
SELECT id, lastName AS name
FROM table
WHERE firstName = 'Das'
ORDER BY id DESC

看起来像是用于
联合
查询的作业

SELECT id, firstName AS name
FROM table
WHERE lastName = 'Das'
UNION ALL
SELECT id, lastName AS name
FROM table
WHERE firstName = 'Das'
ORDER BY id DESC

你没有告诉我们你桌子的名字。假设它被称为
mynames
,这应该可以工作:

select case when firstname = 'Das' then lastname
else firstname end as name from mynames
where lastname = 'Das' or firstname = 'Das' order by id desc;
下面是我在MySQL中编写的一些测试代码,用于验证解决方案是否有效:

mysql> create table mynames(
    -> id int unsigned primary key auto_increment,
    -> firstname varchar(32) not null, 
    -> lastname varchar(32) not null
    -> ) engine=innodb;
Query OK, 0 rows affected (0.45 sec)

mysql> insert into mynames (firstname, lastname) values 
    -> ('Peter', 'Das'),
    -> ('Das', 'James'),
    -> ('vector', 'Call'),
    -> ('cans', 'Das');
Query OK, 4 rows affected (0.49 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from mynames;
+----+-----------+----------+
| id | firstname | lastname |
+----+-----------+----------+
|  1 | Peter     | Das      |
|  2 | Das       | James    |
|  3 | vector    | Call     |
|  4 | cans      | Das      |
+----+-----------+----------+
4 rows in set (0.00 sec)

mysql> select case when firstname = 'Das' then lastname
    -> else firstname end as name from mynames
    -> where lastname = 'Das' or firstname = 'Das' order by id desc;
+-------+
| name  |
+-------+
| cans  |
| James |
| Peter |
+-------+
3 rows in set (0.00 sec)

你没有告诉我们你桌子的名字。假设它被称为
mynames
,这应该可以工作:

select case when firstname = 'Das' then lastname
else firstname end as name from mynames
where lastname = 'Das' or firstname = 'Das' order by id desc;
下面是我在MySQL中编写的一些测试代码,用于验证解决方案是否有效:

mysql> create table mynames(
    -> id int unsigned primary key auto_increment,
    -> firstname varchar(32) not null, 
    -> lastname varchar(32) not null
    -> ) engine=innodb;
Query OK, 0 rows affected (0.45 sec)

mysql> insert into mynames (firstname, lastname) values 
    -> ('Peter', 'Das'),
    -> ('Das', 'James'),
    -> ('vector', 'Call'),
    -> ('cans', 'Das');
Query OK, 4 rows affected (0.49 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from mynames;
+----+-----------+----------+
| id | firstname | lastname |
+----+-----------+----------+
|  1 | Peter     | Das      |
|  2 | Das       | James    |
|  3 | vector    | Call     |
|  4 | cans      | Das      |
+----+-----------+----------+
4 rows in set (0.00 sec)

mysql> select case when firstname = 'Das' then lastname
    -> else firstname end as name from mynames
    -> where lastname = 'Das' or firstname = 'Das' order by id desc;
+-------+
| name  |
+-------+
| cans  |
| James |
| Peter |
+-------+
3 rows in set (0.00 sec)


我想他可能只是在寻找一个普通的工会,而不是一个工会,因为他在样本集中没有返回任何副本。我只是在考虑不可避免的“Das Das”记录。我想他可能只是在寻找一个普通的工会,而不是一个工会,因为他在样本集中没有返回任何重复项。我只是在考虑不可避免的“Das Das”记录。我只是好奇,经过认证的java/php开发人员是否非常有必要创建一个表,填充它并执行查询,以确保这种琐碎的查询真正起作用?;-)@虫族:额外的严格只需要2分钟。字面上可以将其视为一个小型SQL单元测试。如您所愿;-)顺便说一句,sql的单元测试通常作为SP实现,而不是作为数据实现,这只是因为您的测试不是自动化的;-)编写这样的小测试是非常明智的,看到答案中的“工作”让人耳目一新。好奇的是,经过认证的java/php开发人员是否非常有必要创建一个表,填充它并执行查询,以确保这种琐碎的查询真的能工作?;-)@虫族:额外的严格只需要2分钟。字面上可以将其视为一个小型SQL单元测试。如您所愿;-)顺便说一句,sql的单元测试通常作为SP实现,而不是作为数据实现,这只是因为您的测试不是自动化的;-)写这样的小测试是非常明智的,看到答案中的“有效”是令人耳目一新的。@Suman,请随意接受最适合你的答案。@Suman:一年半后你仍然没有接受答案。为什么不呢?@Tomalak Geret'kal:只剩下8个月;-)@苏曼,请随意接受对你最有效的答案。@苏曼:一年半后,你仍然没有接受答案。为什么不呢?@Tomalak Geret'kal:只剩下8个月;-)你会看到firstname和lastname都是“Das”的行吗?你会看到firstname和lastname都是“Das”的行吗?