因此在谷歌搜索这个简单的问题后,我无法在任何地方找到答案。我只有非常基本的数据库知识,我需要在Oracle中进行查询,以便在给定表名和主键的情况下正确选择一行。大多数示例我发现所有行都基于行号或行ID(与主键相同?)。
对此的任何帮助将不胜感激。
答案 0 :(得分:2)
您是否拥有主键列和要查询的值?你在哪里或者究竟在搜索什么?这是任何关系数据库中非常基本的SELECT语句:
SELECT *
FROM table_name
WHERE primary_key_column = primary_key_value
当然,除非我不明白这个问题。
答案 1 :(得分:1)
主键是表中行的唯一标识符。每行都有一个与所有其他行不同的主键。此键可以是一个值,例如rowID,也可以是复合值(多个列用作主键,因为可能不需要额外的列来存储rowID)。
上面的@ tilley31显示了如何搜索表中特定行的一个很好的示例。如果主键是复合的;
SELECT *
FROM table_name
WHERE primary_key_column1 = primary_key_value1
AND primary_key_column2 = primary_key_value2
答案 2 :(得分:0)
ROWID是一个伪列,它返回行的地址并且通常是唯一的,例外情况是在同一个集群中存储多个表,然后这些表行可以共享同一个rowid。 oracle隐式地将ROWID赋予行。
主键唯一标识表级别的行,并由创建表的用户创建。
获取行的ROWID
SELECT ROWID,FIELDNAME FROM ABC;
获取表格的主要密钥
SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME='YOUR_TABLENAME'
AND CONSTRAINT_TYPE='P';
答案 3 :(得分:0)
我猜你有意在查询中动态选择table和where子句(?) 如果这是你想要做的,那么答案是否定的。仅通过查询不可能。你可以通过pl / sql实现它。如果您必须将此作为查询,请考虑使用下面的表函数 -
SELECT * FROM TABLE(func(' TABLE_NAME',' WHERE_CONDITION'))
点击此链接:https://oracle-base.com/articles/misc/pipelined-table-functions
同样,这需要您预设输出列(COLUMN1,COLUMN2等)。您将无法从表中选择确切的列名称。
总的来说,这将是混乱的。