你知道如何編寫一個查詢,如:SELECT ... IN在結果集中複製記錄?
SELECT * FROM customers WHERE id IN (1, 3, 1, 1)
也返回重複的記錄(即:3級的客戶ID 1)?
另一個問題 - 有沒有一種方法,我可以得到記錄排序的IN子句中的ID的順序?
編輯: ID是PK,沒有多個具有相同ID的記錄。我想結果集包含ID爲1的記錄,再乘以3倍
感謝
你知道如何編寫一個查詢,如:SELECT ... IN在結果集中複製記錄?
SELECT * FROM customers WHERE id IN (1, 3, 1, 1)
也返回重複的記錄(即:3級的客戶ID 1)?
另一個問題 - 有沒有一種方法,我可以得到記錄排序的IN子句中的ID的順序?
編輯: ID是PK,沒有多個具有相同ID的記錄。我想結果集包含ID爲1的記錄,再乘以3倍
感謝
您可以將列表項目分成一(臨時)表?如果是這樣
select c.* from customers c join #tmp t on c.id = t.id
爲了解決這個排序你需要與上升的數值順序插入這些如'rank'
select c.* from customers c join #tmp t on c.id = t.id order by t.rank
關於第一個問題這應該工作:SELECT * FROM customers WHERE id IN (1, 3);
它將返回有ID = 1個或ID = 3無論怎樣所有客戶很多人都有相同的ID。
對於第二個問題:
SELECT * FROM customers WHERE id IN (1, 3) Order By Field(id,1,3);
價值觀字段應該相同IN子句。
請看我的編輯(我添加了一些進一步的細節/規格/意見) – 2011-05-19 13:01:12
@Tudor:你想同一行顯示3次嗎? – 2011-05-19 13:03:00
是的,這就是我想要的 – 2011-05-19 13:20:06
HI,如果你在表的id是主鍵,那麼有沒有辦法讓更多的客戶ID,但如果它不是比它會返回所有客戶ID = 1
不,我沒有多個記錄與該ID - 我只是想要相同的記錄乘以3倍 – 2011-05-19 12:57:11
如果你有3個客戶使用相同的ID,你有更大的問題(假設ID是PK)。某些時候您會遇到一些數據完整性問題。
請參閱我的編輯(我添加了一些進一步的細節/規格/意見) – 2011-05-19 13:01:04
做一個UNION SELECT將是一個選項。但這不是一個乾淨的解決方案。 SELECT * FROM customers WHERE id IN(1,3)UNION SELECT * FROM customers WHERE id IN(1)UNION SELECT * FROM customers where id IN(1)。再次 - 這可能不是乾淨的解決方案。 – 2011-05-19 13:07:22
你可以建立一個內嵌表,並join
基表:
SELECT cust.*
FROM (
select 1 as id
union all
select 3
union all
select 1
union all
select 1
) as ids
LEFT JOIN
Customers cust
ON ids.id = cust.id
這可能是一個有趣的想法。另外,我想創建一個臨時表,使用我的ID創建記錄,然後與客戶聯繫。我正在尋找更簡單的東西 - 如果可能的話 – 2011-05-19 13:10:46
我接受了lastfish的回覆,因爲他在網站的開頭,信譽不到100--儘管我也提升了你的答案。謝謝您的意見 – 2011-05-19 14:37:12
你從哪裏得到構建你的子句的IDS? – Paddy 2011-05-19 12:54:53
IMO這種邏輯不應該在查詢中... – Clash 2011-05-19 13:11:18