comeone能帮我破译查询所需的代码逻辑吗?我只是找不到关于这个的解决方案,或者我的搜索查询只是含糊不清。大声笑。
我问了一个问题,想之前是好的,但我刚刚意识到,刚才,这些不准确。以下是我尝试过的:
例如,在搜索页面中,我们有以下变量:

$variable = !empty($_POST["variable"]) ? $_POST['variable'] : "";

问题1
SELECT
    ...
    ...
FROM table1
LEFT JOIN table2 ON table1.column_id = table2.column_id
WHERE table2.column LIKE '%$variable%'

结果1
如果$variable没有值,则只显示具有table2中相应数据的行。
如果$variable有一个值,则显示具有来自table2的相应数据和匹配值的行。
问题2
SELECT
    ...
    ...
FROM table1
LEFT JOIN table2 ON table1.column_id = table2.column_id
     AND table2.column LIKE '%$variable%'

结果2
如果$variable没有值,则显示所有行。
如果$variable有值,则所有行仍将显示。
期望结果
如果$variable没有值,将显示所有行。
如果$variable有一个值,则具有table2中相应数据的行
并显示匹配值。
我已经试过使用IFCASELEFT OUTER JOIN(我在某处发现的东西),但仍然没有运气。我是不是忘了什么?或者我做错了(这是事实)?
我有另一种方法,那就是在PHP中使用条件语句(这将是我的最后一个选择),但是如果这件事只有在MySQL中才可能实现,那就是万岁。

最佳答案

您可以使用以下内容:

SELECT
    ...
    ...
FROM table1
LEFT JOIN table2 ON table1.column_id = table2.column_id
     AND (table2.column LIKE '%$variable%' OR $variable = '' OR $variable IS NULL)

如果$variableNULL或为空,则查询将返回所有记录。否则,只返回匹配的记录。

关于php - MySQL:JOIN和条件语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37718001/

10-15 19:35