![](/img/trans.png)
[英]Mysql update a Null column with values from another table and repeat the order
[英]MySQL - order by a column from another table
我有這兩個表:
表1: option_value
| option_value_id | option_id | sort_order |
|=================|===========|============|
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
表2: option_value_description
| option_value_id | option_id | name |
|=================|===========|========|
| 1 | 1 | Small |
| 2 | 1 | Medium |
| 3 | 1 | Large |
此代碼根據“表1”中的“sort_order”值對結果進行排序:
$option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value WHERE option_id = '" . (int)$option_id . "' ORDER BY sort_order ASC");
如何保持顯示結果的相同代碼,但是按表2中的“名稱”對結果進行排序?
您需要在option_value_id字段上JOIN
兩個表:
select ovd.*
from option_value ov
join option_value_description ovd on ov.option_value_id = ovd.option_value_id
where ov.option_id = ?
order by ovd.name
您可以使用INNER JOIN
查詢,這樣您就可以加入表格,並且可以按第二個表的列name
進行排序
$option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "option_value a LEFT JOIN " . DB_PREFIX . "option_value_description b ON a.option_id = b.option_id AND a.option_value_id = b.option_value_id WHERE a.option_id = '" . (int)$option_id . "' ORDER BY v.name ASC");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.