【问题标题】:How to compare multiple columns in MySql and display result如何比较MySql中的多列并显示结果
【发布时间】:2022-07-30 20:18:34
【问题描述】:

我有两张桌子。我想比较两张桌子的礼物并显示结果。但我不想显示 N/A 值。我想显示结果匹配值而不是匹配值。如果 table1 礼物与 table2 礼物匹配,并且 table1 user_it 与 table2 user_id 匹配,则显示状态是。否则状态显示没有,也算礼物数量。

表 1

id user id name gift1 gift2 gift3 gift4
1 511 Md. Amir Hossain N/A Pad Mobile Laptop
2 522 Md. Faruk Khan Mobile Book Pen N/A
3 533 Md. Rifat Book N/A Laptop Watch
4 544 Md. Hossain Ali Laptop N/A N/A N/A
6 559 Md. Milon khan Watch Pen N/A N/A
7 559 Md. Rifat Mobile Pen Watch Book
8 522 Md. Faruk Khan Pen N/A N/A Mobile

表2

id user id name gift name
1 511 Md. Amir Hossain Watch
3 533 Md. Rifat Watch
9 544 Md. Hossain Ali Laptop
10 522 Md. Faruk Khan Pen

我想这样显示:

结果

name gift qty status
Md. Amir Hossain Pad 1 No
Md. Amir Hossain Mobile 1 No
Md. Amir Hossain Laptop 1 No
Md. Faruk Khan Mobile 2 No
Md. Faruk Khan Book 1 No
Md. Faruk Khan Pen 2 Yes
Md. Rifat Book 2 No
Md. Rifat Laptop 1 No
Md. Rifat Watch 2 Yes
Md. Rifat Pen 1 No
Md. Hossain Ali Laptop 1 Yes
Md. Faruk Khan Pen 1 Yes
Md. Faruk Khan Mobile 1 No

【问题讨论】:

  • 您可以使用插入添加表创建代码
  • 错误的数据模型。必须有 3 张表 - 一张用于用户,一张用于所有可能的礼物,一张用于实际的礼物接收(谁收到了什么礼物以及何时收到)。
  • 我在这个页面插入和添加表格数据:db-fiddle.com/f/3PnzHErrf2fZFGZY67K12X/109
  • 除非您至少添加缺少的表格,否则无法完成,因为我不是算命先生。 @user25183

标签: mysql sql


【解决方案1】:

您可以通过将其分为三个更简单的子步骤来找到解决此问题的有效方法:

  1. 在同一张表上使用UNION 子句聚合Table1 中包含的四个gift<k> 列。

  2. 使用COUNT 之类的聚合函数提取qty 字段,同时删除NULL 值。

  3. 通过加入Table2 并使用IFCASE 等条件语句来处理TABLE2.gift_name 字段来提取status 字段。

每个步骤都应该以嵌套方式处理前面步骤的结果表。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 2012-04-15
    • 2017-11-16
    相关资源
    最近更新 更多