Php MySQL返回行(如果存在),否则返回其他行
需要此查询的帮助Php MySQL返回行(如果存在),否则返回其他行,php,mysql,wordpress,Php,Mysql,Wordpress,需要此查询的帮助 SELECT field_value, file FROM " . $wpdb->prefix . "cf7dbplugin_submits WHERE form_name = '" . $form_name . "' AND submit_time = '" . $submit_time . "' AND (field_name = 'csv_parts_file' OR field_name = 'csv_paste_file'); 基本上,我只想在这里返回一行,但
SELECT field_value, file
FROM " . $wpdb->prefix . "cf7dbplugin_submits
WHERE form_name = '" . $form_name . "' AND submit_time = '" . $submit_time . "' AND (field_name = 'csv_parts_file' OR field_name = 'csv_paste_file');
基本上,我只想在这里返回一行,但是我需要得到field\u name='csv\u parts\u file'
(如果存在)的行,但是如果不存在,我需要得到field\u name='csv\u paste\u file'
的行。我想我可能需要在这里做一个案例
,但不确定如何做。没有太多的案例陈述经验
非常感谢您的帮助
数据库表结构如下:
这是一种有点奇怪的实现方式,但它应该是有效的:
SELECT field_value, file, IF(field_name = 'csv_parts_file', 0, 1) as condition
FROM " . $wpdb->prefix . "cf7dbplugin_submits
WHERE form_name = '" . $form_name . "'
AND submit_time = '" . $submit_time . "'
AND (field_name = 'csv_parts_file' OR field_name = 'csv_paste_file')
ORDER BY condition
LIMIT 1
根本不需要案例陈述;只需将
orderbyfield\u name LIMIT 1
添加到yoru-existingSQL@MarkBaker我使用的是$wpdb->get_row
,所以我不认为它可以用。为什么你不认为它可以用呢?你以为一个复杂的案子会奏效!ORDER BY子句将把csv\u parts\u文件
放在前面(如果两者都有),或者把csv\u parts\u文件
放在前面(如果没有csv\u parts\u文件
条目),LIMIT 1只会使用$wpdb->get\u row
选择第一个条目不起作用,必须使用$wpdb->get_results
来完成,这正是我试图避免的,因为get_results将它拆分为一个更深的数组…清除查询并输入一些原始值,即使它只是一个样本值也可以。以及你需要的结果。感谢您不确定OR是正确答案,因为它可能返回>1行。@Jeff当限制1
时,它怎么会返回多于1行?您是对的,我错过了结尾的限制1语句。。。但是,在这种情况下,它将返回哪一行?满足OR中第一个条件的行或满足第二个条件的行?这就是您的ORDER BY condition
,它将把字段名为“csv\u parts\u file”的行放在第一位