当前位置: 首页 > 知识库问答 >
问题:

MySQL SELECT with IF语句设置另一个表中的变量

简学文
2023-03-14

我想显示基于某个选择条件为true的表1中的所有结果,并根据表2的某个满足条件将表1中的每个结果设置一个变量为0或1。

SELECT * FROM Table1 WHERE Some_Condition=true

Foreach Table1.Name
    SELECT IF(TID IS NULL, 0, 1) AS Variable FROM Table2 
    WHERE 
        Table2.Name=Table1.Name AND Table2.Val='p' 

如何将所有这些都转换为一个SQL调用?

我想看到的例子是:

表1:

+----+-------------------+
| ID |        Name       |
+----+-------------------+
| 1  |        John       |
+----+-------------------+
| 2  |        Alan       |
+----+-------------------+

表2:所以在这里alan是存在的,val='p',而不仅仅是存在的

+-------+-----------+-----+
|  TID  |    Name   | Val |
+-------+-----------+-----+
|   1   |    Alan   |  p  |
+-------+-----------+-----+

要从单个SELECT语句获得的SQL结果:

+------+----------+
| Name | Variable | 
+------+----------+
| John |     0    |
+------+----------+
| Alan |     1    |
+------+----------+

共有2个答案

屠嘉
2023-03-14

我想你只是想加入:

SELECT t2.Name, IF(Tt2.ID IS NULL, 0, 1) AS Variable
FROM Table2 t2 JOIN
     Table1 t1
     ON t2.Name = t1.Name
WHERE t2.Val = 'p' AND <some condition on t1> = true;

在MySQL中,您可以将select简化为:

SELECT t2.Name, (Tt2.ID IS NOT NULL) AS Variable

请注意,我将该名称添加到select中,尽管它不在示例SQL中。

钮才哲
2023-03-14

左联接和大小写语句可能适用于您。请参阅下面的查询。

SELECT A.Name AS item, (CASE WHEN B.Val='p' THEN 1 ELSE 0 END) AS Variable 
FROM Table1 A LEFT JOIN Table2 B ON (A.Name=B.Name)
 类似资料:
  • 我有2个mysql语句,其中一个从4个链接表中获取所有信息,供员工使用。我正在尝试为另一个表中的每个staff member获取标题,但我无法将其添加到1语句中,因为它与所选的主表无关。我已经尝试了mysql语句的20个变体,但都没有成功。我确实让它通过第二条语句中的一个变量拉出标题并输出它,但它给每个语句都赋予了相同的标题,当它再次循环时似乎并没有更新变量。 第一条mysql语句读到(简化版很长

  • 我的主课有两个班(我们称它们为classA和classB)。 是否有机会在classB中设置classA变量? 诸如此类: 非常感谢!问候

  • 问题内容: 我试图编写一个简单的查询,在其中声明一些变量,然后在Oracle的select语句中使用它们。我以前可以在SQL Server中使用以下命令执行此操作: 从我完成的搜索看来,您无法在Select语句中声明和设置像这样的变量。这是对的还是我在发短信? 问题答案: 从我完成的搜索看来,您无法在Select语句中声明和设置像这样的变量。 这是对的还是我错过了什么? 在Oracle PL /

  • 问题内容: 我的问题是我必须在try语句中设置变量,否则会出现编译错误。 稍后我需要使用该变量,但现在超出了范围,所以我相信。我在try语句外部初始化了该变量并将其设置为null,我以为可以在外部访问它,但仍然得到了。 下面的代码,其中有很多代码使阅读变得更容易-我知道这是不好的代码,但是我是Servlets的新手,只想看看它与所有活动部件一起运行时应如何工作。 我创建了另一个类,该类调用crea

  • 我试图在另一个groovy脚本中定义变量,我想在当前脚本中使用它。我有两个这样的脚本: script1.groovy script2.groovy 当我打印ln(state)时,我得到一个缺少的属性异常。基本上,我希望script2具有可以在script1上下文中加载的配置变量。我该怎么做?