【问题标题】:How to get the result of MySQL:[select * from mytable AS t]?如何获取 MySQL:[select * from mytable AS t] 的结果?
【发布时间】:2014-01-17 08:48:53
【问题描述】:

我有一个这样的 SQL:

SELECT m1.id1,m2.user,m3.pass,m4.cap,m5.test
FROM
(SELECT * FROM mytable) AS m1,
(SELECT * FROM mytable) AS m2,
(SELECT * FROM mytable) AS m3,
(SELECT * FROM mytable) AS m4,
(SELECT * FROM mytable) AS m5
WHERE m1.id1=m2.id2 AND m1.id1=m3.id3 AND m1.id1=m4.id4 AND m1.id1=m5.id5;

表mytable很大,但我需要从中获取所有信息,并且需要多次使用子查询,问题是:如何保存查询的结果(SELECT * FROM mytable),例如:

SELECT m1.id1,m2.user,m3.pass,m4.cap,m5.test
FROM
(SELECT * FROM mytable) AS m1,
m1 AS m2,
m1 AS m3,
m1 AS m4,
m1 AS m5
WHERE m1.id1=m2.id2 AND m1.id1=m3.id3 AND m1.id1=m4.id4 AND m1.id1=m5.id5;

非常感谢。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    你应该使用JOIN:

    SELECT m1.id1,m2.user,m3.pass,m4.cap,m5.test
    FROM mytable m1
    JOIN mytable m2 ON m1.id1 = m2.id2
    JOIN mytable m3 ON m1.id1 = m3.id3
    JOIN mytable m4 ON m1.id1 = m4.id4
    JOIN mytable m5 ON m1.id1 = m5.id5
    

    【讨论】:

    • 你是科罗拉多州这边最快的!
    【解决方案2】:

    正确的方法是使用JOIN 并让优化器完成他的工作:

    SELECT m1.id1,m2.user,m3.pass,m4.cap,m5.test
      FROM mytable as m1
      JOIN mytable as m2 ON m1.id1=m2.id2
      JOIN mytable as m3 ON m1.id1=m3.id3
      JOIN mytable as m4 ON m1.id1=m4.id4
      JOIN mytable as m5 ON m1.id1=m5.id5 ;
    

    使用子查询从表中选择所有数据是没有意义的......

    【讨论】:

      猜你喜欢
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 2011-03-22
      • 2010-09-07
      • 1970-01-01
      相关资源
      最近更新 更多