有很多与此相关的问题,但都有相同的使用内连接的答案,这(我认为)在这里是不可能的。(如果我错了就说我)
我现在正在做的是调用两个不同的 mysql 查询来获得结果。它完美地工作。
$db->query("SELECT * FROM `meta` WHERE `metakey` = 'category_order'");
$order = $db->fetch_assoc()['metavalue'];
/*$order = 2,1,12,11,10*/
$db->query("SELECT * FROM `categories` WHERE `parent` = '0' ORDER BY field(ID, $order)");
$cats = $db->fetch();
现在为了减少查询的数量,我尝试了类似的方法,
$db->query("SELECT * FROM `categories` WHERE `parent` = '0' ORDER BY field(ID, (SELECT 'metavalue' FROM `meta` WHERE `metakey` = 'category_order'))");
它没有显示任何错误,但它给了我错误的输出。有没有办法做到这一点?
编辑
类别表的结构,
_________________
| ID | name |
-----------------
| 1 | A |
| 2 | B |
| 11 | C |
| 12 | D |
| 10 | E |
-----------------
元表的结构,
______________________________________
| ID | metakey | metavalue |
--------------------------------------
| 1 | category_order | 2,1,12,11,10 |
--------------------------------------