SELECT
c.cy_id AS cy_id,
(SELECT
c.to_id
FROM c
WHERE (c.to_id = se.ar))AS tsn,
(SELECT
se.x
FROM se
WHERE (c.to_id = se.ar)) AS X,
(SELECT
se.y
FROM se
WHERE (c.to_id = se.ar)) AS y
FROM (c
JOIN se)
WHERE (c.to_id = se.ar)
這上面的查詢當我在mysql中執行給出的錯誤子查詢返回多個行。 但是,當我做下面的查詢它返回結果。mysql中的子查詢錯誤
SELECT
c.cy_id AS cy_id,
(SELECT DISTINCT
c.to_id
FROM c
WHERE (c.to_id = se.ar))AS tsn,
(SELECT
se.x
FROM se
WHERE (c.to_id = se.ar)) AS X,
(SELECT
se.y
FROM se
WHERE (c.to_id = se.ar)) AS y
FROM (c
JOIN se)
WHERE (c.to_id = se.ar).
我需要一個這樣的理由。
如果使用DISTINCT,查詢只返回不同的行,所以也許你第一個查詢返回兩行,這是相同的和DISTINCT查詢只返回一個結果是因爲兩個(或更多)結果全部相等。檢查你的第一個子查詢,看看有多少行返回。 – Sirac
@Sirac:我的第一個查詢不返回任何row.it給出一個錯誤,說subquery返回多個行,但是當我運行第二個查詢使用DISTINCT它給了我78行。那麼區別是什麼呢。 – user3454116
我的意思是你應該運行這個:'SELECT c.to_id FROM c WHERE(c.to_id = se.ar)'看看有多少行返回。如果有多行,則必須使用DISTINCT。要解決您的問題,而不使用DISTINCT,則必須將c.to_id列聲明爲主列或唯一列。 (因此檢查關鍵字PRIMARY和UNIQUE) – Sirac