任何人都可以告訴我如何選擇特定列,如果我不知道表。像的模式,如果我想只有在數據庫表中的第二列中的值不知道列名。有沒有辦法做到這一點?SQL數據庫查詢
Q
SQL數據庫查詢
1
A
回答
0
不知道你想做的事。我真誠地期待你不要做你在做什麼。但是如果你想知道如何玩技術。這是一個例子。可能有更好的方法。
mysql> desc test;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> select * from test;
+------+-------+
| id | name |
+------+-------+
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
| 4 | name4 |
+------+-------+
4 rows in set (0.00 sec)
mysql> select @colid:=column_name from information_schema.columns where table_schema='test' and table_name='test' and ordinal_position=2;
+---------------------+
| @colid:=column_name |
+---------------------+
| name |
+---------------------+
1 row in set (0.01 sec)
mysql> set @sqlstr:=concat('select ', @colid, ' from test');
Query OK, 0 rows affected (0.00 sec)
mysql> prepare sttmt from @sqlstr;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> execute sttmt;
+-------+
| name |
+-------+
| name1 |
| name2 |
| name3 |
| name4 |
+-------+
4 rows in set (0.00 sec)
這裏http://dev.mysql.com/doc/refman/5.0/en/user-variables.html
指最後一個例子順便說一句,谷歌給出了第一個鏈接是完美的解決方案。 Select statement with column number instead of column names
0
,你可以做一個select * from mytable
找出列名是什麼?
您也可以嘗試select * from information_schema.columns where table_name = 'mytable'
如果你的數據庫支持的INFORMATION_SCHEMA視圖。還有其他方法可以找出列的名稱。我會建議試圖找出任何其他可能的解決方法的名稱。
0
這可能與SQL Server/.NET這樣進行:
SqlCommand command =
new SqlCommand("SELECT * FROM TABLE", connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// Call Read before accessing data.
while (reader.Read())
{
string secondVal = reader[1].ToString();
}
我會採取在你爲什麼要做這個擺在首位,雖然很難看。似乎腥給我...
2
你應該幾乎從不依賴於列數的表中的任何代碼的(即使理論上可以在某些語言某些數據庫庫這樣做在技術上)。
原因有很多,其中最重要的一個是,有人可以隨時更改表,並在開始/中間插入一列,徹底打破你的代碼。
的第二個原因是,列位置 - 即使你認爲該表永遠不會改變 - 作出絕對無法讀取,因此無法維護的代碼。你會記得第2列從現在開始的2年是「last_name_3」嗎?
1
雖然我從來沒有建議這樣做你什麼建議,假設你的RDBMS實施了SQL-92標準的INFORMATION_SCHEMA,你可以得到的列名,並用它來構建動態SQL。
SELECT c.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = 'YourTable'
AND c.ORDINAL_POSITION = 2
相關問題
- 1. SQL Server數據庫查詢
- 2. SQL跨數據庫查詢
- 3. 數據庫SQL查詢卡
- 4. 查詢SQL數據庫
- 5. 查詢SQL數據庫
- 6. SQL查詢數據庫的Microsoft SQL Server
- 7. 數據庫關係代數,SQL查詢
- 8. SQL查詢從PHP VS直接SQL數據庫查詢
- 9. 從正常sql查詢WordPress數據庫
- 10. 優化SQL查詢在MySQL數據庫
- 11. SQL查詢數據庫功能
- 12. 多個數據庫上的SQL查詢
- 13. SQL查詢:員工數據庫
- 14. 關於數據庫的SQL查詢
- 15. SQL Server 2012數據庫查詢問題
- 16. SQL查詢多個數據庫
- 17. 查詢多個數據庫SQL Server
- 18. 如何查詢SQL Server數據庫?
- 19. SQL Azure - 跨數據庫查詢
- 20. 從數據庫中選擇SQL查詢
- 21. 來自oracle數據庫的sql查詢
- 22. 使用sql查詢的數據庫
- 23. 用Scala查詢SQL數據庫
- 24. Oracle SQL - 查詢數據庫更改
- 25. SQL Server數據庫查詢幫助
- 26. 使用LINQ查詢SQL數據庫
- 27. SQL分組查詢 - H2數據庫
- 28. Qt SQL線程數據庫查詢
- 29. SQL查詢 - 學生數據庫
- 30. SQL查詢不更新數據庫
不行,你爲什麼不知道列名? – diagonalbatman 2011-02-18 17:54:53
你爲什麼要這麼做? – 2011-02-18 17:55:05