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
中相应数据的行并显示匹配值。
我已经试过使用
IF
,CASE
和LEFT 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)
如果
$variable
是NULL
或为空,则查询将返回所有记录。否则,只返回匹配的记录。关于php - MySQL:JOIN和条件语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37718001/