mysql - 查找包含特定数据的字段名称(mySql)

标签 mysql

我得到了名为“teachers_db”的表,其字段名称为:

teacher_name 
instrument1
instrument2 
payment1 
payment2

在我的程序中,我得到了教师名单以及他们所教的乐器。 即:

Mathew - piano
Mathew - drums
Adam - guitar 

我想在 mySQL 中编写一个代码行,该代码行获取 teacher_nameinstrument (instrument1 =“piano”或 instrumnet2 =“drums”等),并且返回其付款(如果是钢琴则为 payment1,如果是鼓则为 playment2)。

我正在为这个问题苦恼,请帮助:)

最佳答案

获取结果的一种方法是使用两个单独的查询,并结合 UNION ALL 运算符。例如:

 SELECT q.teacher_name
      , q.instrument1 AS instrument
      , q.payment1    AS payment
   FROM teachers_db q
  WHERE q.instrument1 <> ''
  UNION ALL
 SELECT r.teacher_name
      , r.instrument2 AS instrument
      , r.payment2    AS payment
  WHERE r.instrument2 <> ''
 ORDER BY 1,2
<小时/>

另一种方法:

SELECT t.teacher_name
     , CASE i.n WHEN 1 THEN t.instrument1 WHEN 2 THEN t.instrument2 END AS instrument
     , CASE i.n WHEN 1 THEN t.payment1    WHEN 2 THEN t.payment2    END AS payment
  FROM (SELECT 1 AS n UNION ALL SELECT 2) i
 CROSS
  JOIN teachers_db t
HAVING instrument <> ''
 ORDER BY 1,2

关于mysql - 查找包含特定数据的字段名称(mySql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34800497/

相关文章:

php - 为电子商务生成高度独特的字符串

java - 如何加速 Hibernate 批处理并避免 OutOfMemoryException

php - 如何在 Codeigniter 中生成此 MySQL 代码?

mySQL将多个查询变成单个查询

php - 使用比较时mysql查询返回问题

PHP PDO rowCount() 如何得到它的结果?

python - 数据仓库 ETL 缓慢 - 更改维度中的主键?

php - 帖子存档不显示年份和月份

html - 设置一个始终与父表具有相同行数的子表?

php - 登录脚本中的 "Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given"