我想选择一列但顺序不同:

我有2张桌子:

TABLE_NAME:

+------+-----------+
| id   | name      |
+------+-----------+
| 1    |    Sindra |
| 2    |    Auli   |
| 3    |    Brian  |
| 4    |    Bina   |
| 5    |    zian   |
| 6    |    Bri    |
| 7    |    Andre  |
+------+-----------+

table_temp,id_temp_name id(table_name)的外键:

+------+--------------+
| id   | id_temp_name |
+------+--------------+
| 1    |    1         |
| 2    |    3         |
| 3    |    4         |
| 4    |    2         |
+------+--------------+

使用此查询:

  SELECT  * 
  FROM table_name 
  WHERE id IN 
  (SELECT id_temp_name FROM table_temp)

结果始终与table_name相同,我一直在寻找与id_temp_name order完全相同的结果,因此结果将是:

+------+-----------+
| id   | name      |
+------+-----------+
| 1    |    Sindra |
| 3    |    Brian  |
| 4    |    Bina   |
| 2    |    Auli   |
+------+-----------+

感谢您的任何建议。

===============>>#1 票数:2

您需要将查询重写为两个表之间的JOIN ,然后就可以基于所涉及的任何列来设置顺序,即使不在最终结果集中也是如此:

SELECT table_name.id,
       table_name.name
FROM table_name
INNER JOIN table_temp ON table_name.id = table_temp.id_temp_name
ORDER BY table_temp.id ;

===============>>#2 票数:2

使用联接而不是子查询。

SELECT table_name.id, table_name.name
FROM table_name
INNER JOIN table_temp ON table_name.id = table_temp.id
ORDER BY table_temp.id_temp_name

而且...通常最好显式列出字段,而不要使用*来全选。

===============>>#3 票数:0

您应该使用简单的JOIN来实现结果。

您的查询:

    SELECT * 
    FROM table_name 
    WHERE id IN 
    (SELECT id_temp_name FROM table_temp)

实际上返回table_name表的所有行和列。 因此,您将无法获得所需的id_temp_name结果,因为它位于不同的表中。 这就是为什么,您应该使用LEFT JOIN ,因为您的左表是table_name,右表是table_temp,并且您想要显示来自table_temp列(即id_temp_name)的数据。

因此,您需要做的是:

    SELECT tn.id, tn.name
    FROM table_name AS tn
    LEFT JOIN table_temp AS tt
    ON tn.id= tt.id_temp_name
    GROUP BY tn.id

  ask by walk.this_way translate from so

未解决问题?本站智能推荐:

5回复

SQL:按其他表选择语句顺序

我想选择一列但顺序不同: 我有2张桌子: TABLE_NAME: table_temp,id_temp_name id(table_name)的外键: 使用此查询: 我一直在寻找与id_temp_name order完全相同的结果,但是它显示的值不在asc的t
5回复

以下sql语句有什么区别?

我尝试了一下,结果还是一样,但是我想确定一下,因为我正在重构使用第二个版本的代码,令我感到惊讶的是,它既更长又不那么简单。 这里有隐藏的东西吗? MySQL版本:5.5.29-0ubuntu0.12.04.2(Ubuntu)
3回复

SQL选择顺序

这是我的SQL查询,我只想从销售表中以降序排列我的SellingPrice需要帮助提前谢谢。 例如
2回复

SQL选择语句

我得到了一个表格,其中有两个字段:点和水平, 带有一些示例数据,如下所示: ----------------------- 点| 水平 ----------------------- 10 | 1级 20 | 2级 30 | 3级 40 | 4级
3回复

SQL选择语句

我正在尝试选择一组数据,包括50个州的男性和女性。 但是,我需要排除5个州(女性和男性)和一个州(女性)。 我不确定如何在一个where语句中有两个条件。 下面是该代码的简单版本。 代码的最后一行显然是错误的。 我想说“当状态码为OR,CA,WA,OH和VA时我要排除数据”,也
2回复

sql join语句的顺序

我有一些不清楚的地方: 因此,在此语句中,叉积出现在联接条件之前,或者它们同时完成,我的意思是我们比较sid,然后形成表,或者使表成为“叉积”,然后形成条件?
2回复

带联合和顺序的sql语句

这个SQL很好用,但是一旦我想使用ORDER BY id来排序我的选择,它将无法工作。 所有这些表都有一个id类型int 。
1回复

按子项和名称选择语句顺序

这是我需要的结果 这是我的结果 这是我的查询 这是我的数据库http://sqlfiddle.com/#!9/f059f4
4回复

SQL-按特定顺序选择

我需要执行特定的sql查询。 例如,我们有一个名为people的表,该表具有以下记录: 我将获得一个特定的人,例如,我得到henrique id 4 ,选择必须向我显示此列表: 而且我还需要做逆序 我怎样才能做到这一点? 谢谢
1回复

SQL IN运算符选择顺序?

对于SQL IN运算符 如果要选择所有值都首先匹配的行? 我确实意识到可以将查询翻译成 但说我有这张桌子 静态将是 对于IN ('Germany', 'France', 'UK'); 我期望得到的是[CUS1, CUS2, CUS3]; 但是对于IN (