gpt4 book ai didi

php - MySQL:如果列值为 2,则执行 X ELSE 执行 Y

转载 作者:行者123 更新时间:2023-11-29 22:11:11 25 4
gpt4 key购买 nike

我现在正在处理的数据库有点困惑。我有三个潜在的表,我想加入,但在某些情况下可能只有两个表。我们将这些称为 table1、table2 和 table3。

table1 有一个名为“type”的字段。如果table1.type是2,那么我只需要加入table3。对于任何其他值,我想先加入 table2,然后加入 table3。

如何通过一个 SQL 查询来实现这一目标,而不是:1) 使用一个查询来选择类型。 2) 创建一个 PHP foreach 循环来检查当前迭代的类型,3) 根据类型值执行新的查询。

编辑:我会尽量说得更具体。

table1 有一个名为“pid”的列,它引用整个其他表,但这对于这个问题来说是多余的。我尝试使用 UNION 和 LEFT JOIN 来解决问题,但无法实现我想要的目标。

我想从数据库中选择“pid”值为“100”的所有结果。这给了我四行返回,其中 2 行的类型值为“2”,其他行的类型为“1”。

所以基本上我想要实现的是将以下两个 SQL 语句合二为一:

(如果“类型”为“2”)

SELECT *
FROM table1 t1
INNER JOIN table3 t3
ON t1.id = t3.t1_id
WHERE t1.pid = 100

(如果“类型”不是“2”)

SELECT *
FROM table1 t1
INNER JOIN table2 t2
ON t1.id = t2.t1_id
INNER JOIN table3 t3
ON t2.id = t3.t2_id
WHERE t1.pid = 100

我猜我可以使用 UNION 语句来做到这一点,但我对如何实现 WHERE t1.pid = '100' 部分感到困惑。

最佳答案

使用UNION,例如

SELECT t1.*, t3.*
FROM table1 t1
INNER JOIN table3 t3 ON t1.id = t3.t1_id
WHERE t1.pid = 100 and t1.type = 2
UNION
SELECT t1.*, t3.*
FROM table1 t1
INNER JOIN table2 t2
ON t1.id = t2.t1_id
INNER JOIN table3 t3 ON t2.id = t3.t2_id
WHERE t1.pid = 100 and t1.type <> 2;

但最好明确命名您想要返回的列。

关于php - MySQL:如果列值为 2,则执行 X ELSE 执行 Y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31652964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com