mysql - 从具有不同列的两个表中获取数据的单个查询

标签 mysql

我有两个表,eventperformer,每个表都有一个 slug 列。除了 slug 列之外,event 表还有列 col1col2col3performer 表有一个名为 id 的列。

我需要的是一个单一的查询,它将 slug 值作为输入并首先查看 event 表。如果找到匹配项,它会返回 event 表中的所有列。如果找不到匹配项,它会查看 performer 表并仅返回 id

本质上等同于下面两个查询:

select col1, col2, col3 from event where slug = ?

如果第一个查询中没有结果,请运行以下命令:

select id from performer where slug = ?

我知道返回的列数应该是一致的,所以 id 的值在第一种情况下可以为 null 而 col1col2 的值col3 在第二种情况下可以为空。我可以测试 null 以查看是哪种情况。

我宁愿在查询中没有条件 - 我觉得它可以用一个查询来完成,但不知道如何做。

最佳答案

您可以尝试 IF EXISTS,它可以在一个查询中完成。我知道你说没有条件,但这是一个查询命令。

IF EXISTS(select col1, col2, col3 from event where slug = ?) 
BEGIN 
select col1, col2, col3 from event where slug = ?
END
ELSE 
BEGIN
select id from performer where slug = ?
END 

希望对您有所帮助!

关于mysql - 从具有不同列的两个表中获取数据的单个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35616197/

相关文章:

database - MySQL:返回 COUNT(*) 大于的字段

mysql - 为什么我的带有子查询的 sql 查询速度如此之慢,即使子查询执行得很快?

MySQL Select 首先显示特定列值

mysql数据库连接vb.net

使用外键按层次结构排序的 mySQL 查询

mysql 如果存在给出错误语法错误?

php - 将大表格发布到 php 文件

php - SQL 语法错误或服务器错误?

php - 是否可以检测视口(viewport)宽度并在 jquery 中写入 mysql,然后在不重新加载页面的情况下在 php 中检索宽度

mysql - "roll up"在 MySql 中聚合数据的最佳方法是什么?